2014-01-23 4 views
17

У меня есть проект Gradle со многими зависимостями, один из которых не будет решен следующим образом:Gradle: как отобразить, где возникает конфликт зависимости

gradle dependencyInsight --configuration compile --dependency javax.activation 

:dependencyInsight 
javax.activation:activation:1.1 (conflict resolution) 
+--- com.sun.mail:mailapi:1.4.4 
| \--- compile 
\--- com.sun.mail:smtp:1.4.4 
    \--- compile 

javax.activation:activation:1.0.2 -> 1.1 
\--- compile 

версия 1.1 должна быть транзитивной зависимостью, потому что явно указаны 1.0. 2. Как я могу узнать, откуда эта специфическая транзитивная зависимость?

ответ

14

Ответ на этот вопрос - это цель задачи dependencyInsight. javax.activation:activation:1.1 вытягивается com.sun.mail:mailapi:1.4.4 и com.sun.mail:smtp:1.4.4.

Если ваш собственный код также зависит от javax.activation, вы можете заставить свою версию с compile("javax.activation:activation:1.0.2") { force = true }. Если нет, вы можете заставить версию с configurations.all { resolutionStrategy.force "javax.activation:activation:1.0.2" }.

+0

Да, я этого не осознавал. Есть ли способ показать все разрешенные конфликты одним выстрелом? –

+2

Вы можете выполнить 'configurations.all {resulutionStrategy.failOnVersionConflict()}', и в этом случае Gradle заставит вас явно разрешать все конфликты версий в скрипте сборки. –

+0

Что делать, если я просто хочу знать, как они решены? –

Смежные вопросы