Maven依赖排除 禁止依赖传递 取消依赖的方法
1. 项目间传递
如果我的当前项目是project1,project1要依赖project2,project1依赖project2的配置中加上 <optional>true</optional>,表示依赖可选,
<dependency> <groupId>com.projecct</groupId> <artifactId>project2</artifactId> <version>1.0</version> <scope>compile</scope> <optional>true</optional> </dependency>
那么以后所有声明依赖project1的项目如果也依赖project2,就必须写手动声明。比如project3依赖project1和project2,如果project3只声明了对project1的依赖,那么project2不会自动加入依赖,需要重新声明对project2的依赖。
这种方式排除不了我项目中对第三方jar包所依赖的其他依赖,因为我不可能去修改第三方jar包的pom文件,所以只适合在项目组内部使用。
2. 依赖过滤
(1)单依赖过滤
同依赖过滤直接处理:可以过滤一个或者多个,如果过滤多个要写多个<exclusion>。这个也解决不了我的问题,或者说解决太麻烦,我那里知道hbase要依赖那些包,记不住。
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>0.94.17</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
(2)多依赖过滤
把所以依赖都过滤了。手起刀落~啊,世界都安静了。
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>0.94.17</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
原文来自:http://blog.csdn.net/jiesa/article/details/51777455