我现在有三个项目形成一个依赖关系链,Project A
取决于Project B
取决于Project C
。
在Project B
中,我试图排除导致weblogic问题的xml-apis
jar。我在Project B
的POM中这样做:
<dependency>
<groupId>com.company</groupId>
<artifactId>projectC</artifactId>
<version>1.0.3-SNAPSHOT</version>
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
</exclusions>
</dependency>
但是,当我打包Project A时,xml-apis
工件仍然被包含在内。排除这个xml-apis
jar的正确方法是什么?我是否应该准确找到Project C
中的哪个包带来并将其标记为提供?
现在我的解决方法是在Project A
的POM中列出上述依赖项。
编辑:
Project A
依赖于Project B
和Project C
。由于Project B
依赖于Project C
而Project B
永远不会在没有Project C
的情况下使用,因此我希望不必在Project A
和Project B
中包含依赖项信息{1}}。
答案 0 :(得分:2)
项目B的pom声明它使用项目C,除了它(项目B)不需要xml-apis。
Project A的pom还声明它使用Project C,但不用说它不需要xml-apis,因此maven认为它确实需要它们。
您可以将xml-apis的依赖项添加到项目A并提供范围,这意味着您需要它们,但是您将确保实现可用并且您不希望maven包含它们,或者您可以删除项目A对项目C的依赖。
答案 1 :(得分:0)
项目B不依赖于A.在c依赖项中插入b的pom中的excludes语句。
答案 2 :(得分:0)
问题不明确,可能很清楚但令人困惑。只需执行mvn dependency:tree
,检查并排除正确pom中所需的依赖关系,无论是A还是B还是C.