【问题标题】:On which level of the maven dependency tree are dependencies from the parent projectmaven依赖树的哪一层是来自父项目的依赖
【发布时间】:2020-02-03 19:36:40
【问题描述】:

我有一个父 pom,它依赖于 1.0 版的第三方 jar A。然后我有一个从父 pom 继承的子项目。这个子项目定义了对库 B 的依赖,而库 B 本身对第三方 jar A 具有 1.1 版本的依赖。

依赖树看起来像这样吗(因此引入了 1.0 版):

子->A(1.0版) Child->B->A(1.1版)

父POM的依赖在依赖树的哪一层?

【问题讨论】:

  • 你已经在使用maven依赖插件了吗? maven.apache.org/plugins/maven-dependency-plugin/index.html这可以帮助你分析并最终查看你的模块的依赖树。
  • 您可以从命令行调用mvn dependency:tree 来查找。无论如何,依赖1.0 应该“胜过”1.1,因为它在依赖树中“更高”。并且从父 pom 继承的依赖项位于顶层..

标签: java maven dependencies dependency-tree


【解决方案1】:

在解决依赖关系之前,父子POM首先被组合成一个“有效的POM”。您可以使用mvnhelp:effective-pom 显示有效的 POM。因此你的依赖树变成:

  (Effective POM) -> A:1.0
  (Effective POM) -> B     -> A:1.1

效果与在子 POM 中声明 A:1.0 依赖项相同。由于依赖关系更接近 Maven 中的根“win”,因此使用 A:1.0。

此外,如果父 POM 和子 POM 都声明对同一模块的依赖,则子指定的版本会覆盖父指定的版本(= 成为有效 POM 中的版本)。

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2012-08-11
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多