【发布时间】:2019-10-16 08:35:49
【问题描述】:
假设我有一个 maven 父 POM root,它在依赖管理中定义了 foo:bar:1.0.0。我有另一个父 POM parent 使用 root 作为父级(只是为了在示例中添加另一层)。最后,我有一个物料清单 bom,它使用 root 作为其父级,但在其依赖管理中重新定义了 foo:bar:2.0.0。
在我的项目app中我继承自parent,然后我在app的依赖管理部分中import the BOM
root (foo:bar:1.0.0) <- parent <- app+bom
^
|
bom (foo:bar:2.0.0)
哪个依赖管理部分获胜?我会得到哪个版本的foo:bar?
我知道如果我直接将foo:bar 包含在app 的依赖项管理部分中,它将覆盖从父项继承的内容。但是 importing 依赖管理部分中的 BOM 是否等同于直接将其包含在依赖管理部分中,并且足以覆盖父项的 BOM?还是从父依赖管理继承的foo:bar优先?
【问题讨论】:
-
最接近我认为的项目。
-
导入一个 bom不 与将它们直接放入 dependencyManagement 相同,但更弱。我从来没有找到指定优先级的文档,我只是通过例子有一个模糊的理解。
-
如果您不确定哪些版本中的哪些依赖项被拉入您的项目,您可以尝试
mvn dependency:tree或mvn help:effective-pom。
标签: maven pom.xml dependency-management maven-bom