Я просто испытал случай с двумя прямыми зависимостями моего проекта 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, заставило некоторые вещи сломаться.
Существует ли какой-либо плагин maven или какой-либо другой инструмент, который будет обнаруживать переопределение такого рода с высокой транзитивной зависимостью и, по крайней мере, предупреждать пользователя (или не выполнить выполнение maven), если он обнаруживает такое столкновение... даже если значение по умолчанию maven - просто выбрать первую версию, которая появляется при разрешении зависимостей?