这是我偶然发现的一个真实例子。 我有以下声明的spring-context工件(spring.version是3.2.4.RELEASE):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
如果您检查此页面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>
现在看来我的项目正在导入两个不同版本的hibernate-validator。 项目正在使用哪一个? 谢谢。
答案 0 :(得分:6)
神奇的单词是distance
:使用最靠近项目的单词。因此,如果您在项目pom中定义它,则使用该项目。您还可以查看具有多个目标的maven-dependency-plugin,这些目标可以向您显示以不同方式使用的版本。
答案 1 :(得分:2)
我发现这对查看我使用的依赖项非常有用: http://maven.apache.org/plugins/maven-dependency-plugin/examples/filtering-the-dependency-tree.html
基本上在cmd上输入:
mvn dependency:tree
它将显示项目的所有依赖项。
类型
mvn dependency:tree -Dincludes=velocity:velocity
它只显示速度的依赖树。 (输入的模式是groupId:artifactId)。