排除普通项目的依赖性

时间:2010-12-23 16:28:10

标签: java maven-2 maven

我现在有三个项目形成一个依赖关系链,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 BProject C。由于Project B依赖于Project CProject B永远不会在没有Project C的情况下使用,因此我希望不必在Project AProject B中包含依赖项信息{1}}。

3 个答案:

答案 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.