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

pka*_*mol 6 dependency-management maven-3 maven

从事多模块项目。

GrandParent
        \
         Parent
             \
             Child
Run Code Online (Sandbox Code Playgroud)

GrandParent具有rogue_1模块中的<dependencyManagement>部分作为提供

Parent确实具有rogue_1在其pom.xml所有。

Child确实具有rogue_1作为其直接依赖关系pom.xml

然而,它包括其他几个项目,其中一些可能包括rogue_1. (至少一个依赖于rogue_1

为了安全起见,在ALL 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>
Run Code Online (Sandbox Code Playgroud)

(例如,如果要galen.erso引入resistance.rogue_1

但是rogue_1 DOES最终会被显示为结果的相关性

mvn help:effective-pom

(如提供!)

不是

mvn dependency:tree

有什么建议?

Nam*_*man 8

mvn help:effective-pom

基本上是超级 POM(大/+父)依赖项和您在项目级别定义的简单 POM 之间的合并。因此,您确实看到了rogue_1Effective-pom 创建的 XML 下的内容,当然您的祖父 pomdependencyManagement是源代码。这是相同的详细阅读

mvn dependency:tree

另一方面显示项目中使用的依赖项的 tre。正如您所提到的,您已将其排除在所有提到的依赖项之外,因此您不应在此处找到列出的工件。

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