场景:父项目(或是父父~项目)的依赖包,没有用dependencyManagement(子项目不会直接继承并依赖,而是可选择,此时父项目只是负责管理版本号)管理,而是放在dependencies中,导致子项目被动继承依赖。
解决办法:在子项目的dependencies中,引入父项目,并在依赖父项目的dependency中用<exclusions>排除掉父项目中不需要的依赖包。
如下:A是父父项目,B是父项目,C是子项目
A->B->C,此时A依赖包D,而C想去掉继承依赖包D,则C的POM可以如下写法:
<dependency>
<groupId>A-groupId</groupId>
<artifactId>A-artifactId</artifactId>
<exclusions>
<exclusion>
<groupId>D-groupId</groupId>
<artifactId>D-artifactId</artifactId>
</exclusion>
</exclusions>
</dependency>
当父项目或父父项目中的依赖包不是通过dependencyManagement管理,而是直接在dependencies中定义时,子项目会继承这些依赖。如果子项目想要排除某个继承的依赖,可以在子项目的POM文件中引入父项目,并使用<exclusions>标签来排除特定的依赖包,如A项目依赖D包,但C项目不希望继承这个依赖,可以通过排除D的groupId和artifactId实现。
2350

被折叠的 条评论
为什么被折叠?



