【发布时间】:2012-04-05 13:00:11
【问题描述】:
我刚刚经历了一个案例,我的 maven 项目的两个直接依赖项具有两个不同版本的特定传递依赖项。
在我的特定情况下,我直接依赖于以下内容:
<dependency>
<groupId>org.jclouds.driver</groupId>
<artifactId>jclouds-sshj</artifactId>
<version>${jclouds.version}</version>
</dependency>
和
<dependency>
<groupId>org.mule.modules</groupId>
<artifactId>mule-module-jersey</artifactId>
<version>${mule.version}</version>
</dependency>
这两个依赖项都对 com.sun.jersey:jersey-core 具有(深度)传递依赖项,但每个依赖项都有不同的版本。 Maven 并没有在这方面失败,甚至警告(或者如果确实如此,我从未见过!)这样的事情正在发生......因此我从未注意到它,直到调试 jersey 版本时发生的问题 - jclouds 依赖引入的 core 导致了一些问题。
是否存在 maven 插件或其他工具可以检测这种深度传递依赖覆盖,并且如果检测到这种冲突至少会警告用户(或使 maven 执行失败)......即使默认maven 行为是只选择解析依赖项时出现的第一个版本?
【问题讨论】:
标签: java maven maven-2 maven-3