Maven:依赖关系出现在有效的pom中但不出现在依赖树

时间:2017-03-07 16:38:42

标签: maven maven-3 dependency-management

处理多模块项目。

GrandParent
        \
         Parent
             \
             Child

GrandParentrogue_1部分中有<dependencyManagement>个模块提供

Parent 在其rogue_1中有pom.xml

Child rogue_1作为其pom.xml中的直接依赖项。

然而,它包括其他一些项目,其中一些可能包括rogue_1。 (至少有一个 取决于rogue_1

为了安全起见,在所有 Child的依赖关系中,我添加了排除项,如下所示:

<dependency> <!-- a direct dependency of Child -->
    <groupId>erso</groupId>
    <artifactId>galen</artifactId>
    <exclusions>
        <exclusion>
            <groupId>resistance</groupId>
            <artifactId>rogue_1</artifactId>
        </exclusion>
    </exclusions>
</dependency>

(例如galen.erso引入resistance.rogue_1

然而rogue_1 DOES 最终会在

的结果中显示为依赖关系

mvn help:effective-pom

(如提供!)

的ouctome中

mvn dependency:tree

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

mvn help:effective-pom

基本上是超级POM(宏/ +父)依赖项与您在项目级别定义的简单POM之间的合并。因此,您确实在Effective-pom创建的XML下看到rogue_1,当然您的祖父母pom dependencyManagement是来源。这是一个detailed read

mvn dependency:tree

另一方面,

显示项目中使用的依赖项的tre。正如你所提到的,你已经从你提到的所有依赖项中排除了这个,所以你不应该找到这里列出的工件。

顺便说一句,在这两种情况下,rogue_1模块的类路径中child的机会为零。

答案 1 :(得分:0)

如果您的项目中有个人资料,或者您正在继承的资料(并且某种方式被激活),您可能会遇到这种行为。据我所知,<profile/>中定义的依赖关系不会出现在依赖树上。