dependencyManagement究竟是否优先于依赖关系定义中的版本?

时间:2016-07-14 14:56:22

标签: maven dependency-management

假设我在dependencyManagement部分中定义了一些工件的版本。

此版本定义是否覆盖传递依赖项中的所有版本定义?

或者它只解决版本冲突?

因此,如果我在我的dependencyManagement中将foo放在版本2.0.0中,并且版本1.0.0中的某些传递依赖关系具有foo,那么我总是得到2.0.0吗?

1 个答案:

答案 0 :(得分:0)

这就是它如何与Maven 2一起使用。一般来说,这是基本规则:无论你的项目指定什么优先于你的依赖指定的任何东西。

然而,根据Maven 3.x Compatibility Notes,此过程在Maven 3中已更改。现在它使用Aether并且应该更智能,甚至可能考虑语义版本控制,即使version ranges没用过。在我看来,文档是分散的,不是很清楚。我认为主要区别在于如何在两个依赖项之间解决冲突,而不是在项目和依赖项之间解决。所以第一条规则仍然适用。