【问题标题】:Maven: dependency appears in effective pom but not in dependency treeMaven:依赖出现在有效的pom中但不在依赖树中
【发布时间】:2017-07-27 23:22:17
【问题描述】:

处理多模块项目。

GrandParent
        \
         Parent
             \
             Child

GrandParent 在其<dependencyManagement> 部分中有rogue_1 模块,如提供

Parent NOT 在其pom.xml 中根本没有rogue_1

Child 确实 NOTrogue_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>

(以防 galen.erso 引入 resistance.rogue_1

然而rogue_1 确实最终会在

的结果中显示为依赖项

mvn help:effective-pom

(如提供!)

的结尾是NOT

mvn dependency:tree

有什么建议吗?

【问题讨论】:

  • 您能否澄清它是否显示在 &lt;dependencyManagement&gt; &lt;dependencies&gt;&lt;dependencies&gt; 中。我认为可以出现在前者但不能出现在后者。是不是这种情况。你能确认一下。 ++1

标签: maven maven-3 dependency-management


【解决方案1】:

如果您的项目中有配置文件,或者您正在继承的配置文件(并且以某种方式被激活),您可能会遇到这种行为。据我记得,&lt;profile/&gt; 中定义的依赖项不会显示在依赖项树上。

【讨论】:

    【解决方案2】:

    mvn help:effective-pom

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

    mvn dependency:tree

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

    顺便说一句,在这两种情况下,rogue_1 出现在 child 模块的类路径中的可能性为零。

    【讨论】:

    • 您能否澄清一下 rouge_1 是否会出现在 &lt;dependencyManagement&gt; &lt;dependencies&gt;&lt;dependencies&gt; 中。我认为可以出现在前者但不能出现在后者。是不是这样。你能确认一下。 ++1
    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多