当我在同一个pom文件中声明两个不同的版本时,哪种maven依赖性占上风?

ski*_*box 1 java spring hibernate maven

这是我偶然发现的一个真实例子.我有以下声明的spring-context工件(spring.version是3.2.4.RELEASE):

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${spring.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果您查看此页面http://www.mvnrepository.com/artifact/org.springframework/spring-context/3.2.4.RELEASE,您将在段落中看到(此工件依赖于......)所有依赖项使用上述声明时导入.其中一个是hibernate-validator(4.3.0.FINAL).

后来,我决定在我的pom.xml文件中使用另一个版本的hibernate-validator(例如因为它更新),我声明了以下代码:

<dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-validator</artifactId>
     <version>4.3.1.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

现在看来我的项目正在导入两个不同版本的hibernate-validator.项目正在使用哪一个?谢谢.

Rob*_*lte 6

神奇的词是distance:使用最靠近项目的那个.因此,如果您在项目pom中定义它,则使用该项目.您还可以检查maven-dependency-plugin,它有几个目标,可以显示以不同方式使用的版本.