假设我有一个 Maven 父 POMroot
它定义了foo:bar:1.0.0
在依赖管理中。我有另一个父 POMparent
它使用root
作为父级(只是为了向示例添加另一个层)。最后我有一份材料清单bom
它使用root
作为其父级但重新定义foo:bar:2.0.0
在其依赖管理中。
在我的项目中app
我继承自parent
然后我导入物料清单 https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html在依赖管理部分app
root (foo:bar:1.0.0) <- parent <- app+bom
^
|
bom (foo:bar:2.0.0)
哪个依赖管理部分获胜?哪个版本的foo:bar
我明白吗?
我知道如果我直接包含foo:bar
在依赖管理部分app
,它将覆盖从父级继承的内容。但是输入依赖管理部分中的 BOM 相当于直接将其包含在依赖管理部分中,并且足以覆盖父级的 BOM?还是遗传的foo:bar
来自父级的依赖管理优先?
根据maven优先规则,来自root的版本将获胜,因此你将得到foo:bar:1.0.0,如果你查看有效的POM,你将能够看到它。我认为这会降低 BOM 项目的效率,因为您无法使用它来覆盖父级的版本,并且必须在应用程序或父级中声明版本。
优先顺序
因此,有多种方法来决定版本,
这意味着存在优先顺序。
- POM 中直接声明中提供的版本具有最高优先级。
- 父 pom 中提供的版本具有第二优先级。
- 导入 pom 的版本获得第三名
- 最后,无论我们从依赖调解中得到什么
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)