使用可选依赖
将依赖坐标的
<project>
...
<dependencies>
<!-- declare the dependency to be set as optional -->
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<optional>true</optional> <!-- value will be true or false only -->
</dependency>
</dependencies>
</project>
使用optional依赖可以节省空间和内存
使用场景
当编写一个类库时,比如projectX,可能会包含很多功能,但是依赖projectX的项目projectA只会使用其中一部分功能,对于没有用到的功能,projectA不希望依赖无用功能的jar包。这时就需要projectX使用optional依赖。
projectX -> projectY(optional)
projectA -> projectX
如果projectA没有使用projectY相关的类,则projectY不会被打包到war包或fatjar。
如果projectA要使用所有的功能,则需要在自己的项目中显式的引入相关依赖。