Maven - 检测同一依赖项的多个版本
我刚刚经历了一个案例,我的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没有在这方面失败,甚至没有警告(或者如果确实如此,我从未见过它!)这样的事情正在发生......因此,我从未注意到它,直到调试了一个问题,当jclouds依赖项引入的球衣核心版本导致某些东西中断时,发生了这个问题。
是否存在一个maven插件或其他一些工具可以检测到这种深度传递依赖覆盖,并在检测到此类碰撞时至少警告用户(或使maven执行失败)...即使默认的 maven 行为是只选择解析依赖项时出现的第一个版本?