Gar*_*son 8 dependency-management pom.xml maven maven-bom
假设我有一个在依赖管理中root定义的Maven 父 POM foo:bar:1.0.0。我有另一个parent用作root父级的父 POM(只是为了向示例添加另一个层)。最后,我有一个物料清单bom,它用作root其父级,但foo:bar:2.0.0在其依赖性管理中重新定义。
在我的项目中app,我继承parent并在依赖管理部分导入 BOMapp
root (foo:bar:1.0.0) <- parent <- app+bom
^
|
bom (foo:bar:2.0.0)
Run Code Online (Sandbox Code Playgroud)
哪个依赖管理部分获胜?我可以获得哪个版本foo:bar?
我知道如果我直接包含foo:bar在 的依赖管理部分中app,它将覆盖从父级继承的依赖管理部分。但是,在依赖管理部分导入BOM 是否等同于直接将其包含在依赖管理部分中,并且足以覆盖父级的 BOM?或者foo:bar从父级继承的依赖管理优先?
小智 12
根据maven优先规则,根版本将获胜,因此你将得到foo:bar:1.0.0,如果你查看有效的POM,你将能够看到它。我认为这会降低 BOM 项目的效率,因为您无法使用它来覆盖父级的版本,并且必须在应用程序或父级中声明版本。
优先顺序
因此,决定版本的方法有多种,这意味着存在优先顺序。
- POM 中直接声明中提供的版本具有最高优先级。
- 父 pom 中提供的版本具有第二优先级。
- 导入 pom 的版本获得第三名
- 最后,无论我们从依赖调解中得到什么
| 归档时间: |
|
| 查看次数: |
15066 次 |
| 最近记录: |