Maven会从两个中选择最新的依赖吗?

时间:2017-03-20 15:28:30

标签: java web-services maven jersey

这个问题可能已经有了答案,但我找不到令人满意的答案。我刚刚将jersey罐子更新为最新的罐子。我从jersey得到Parent project个依赖项,它还包含另一个项目作为依赖项,使用较低版本的jersey。我没有更新此项目中的jersey罐子。更新jar后我看到两个版本的jersey client其中一个是最新的,另一个是来自使用较低版本的项目.Scope是编译。我的应用程序运行正常但在lib文件夹中我看到两个版本的jersey客户端1.17和2.25.1。这会导致任何问题,或者Maven会一直使用2.25.1吗?

由于

1 个答案:

答案 0 :(得分:3)

Maven将始终采用与依赖关系树的根最接近的依赖关系。如果两个不同的版本在同一级别上,则将采用声明的第一个版本。让我们举个例子:

pom.xml
|--A:1.0
|--B:1.0
|  |--A:2.0
|  |--C:1.0
|  |--D:2.0
|--C:2.0
   |--D:1.0

此处,解析了库A:1.0B:1.0C:2.0D:2.0。虽然ABC的版本因为距离根最近而被采用,但D的版本被采用,因为它是首先声明的。