2014-11-22 1 views
1

Вот выход из МВН зависимости: деревоВыход из Maven зависимостей: дерево, какая версия будет переопределять

Проверка зависимостей для Кафки.

Я вижу, что это происходит в двух местах и ​​вы хотите знать, какая зависимость будет входить в игру при запуске приложения.

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ suite --- 
[INFO] com.company.foo.qe:suite:jar:2.8.0-SNAPSHOT 
[INFO] +- org.apache.kafka:kafka_2.11:jar:0.8.2-V3-PATCH:compile 
[INFO] | +- org.scala-lang.modules:scala-xml_2.11:jar:1.0.2:compile 
[INFO] | +- com.yammer.metrics:metrics-core:jar:2.2.0:compile 
[INFO] | +- net.sf.jopt-simple:jopt-simple:jar:3.2:compile 
[INFO] | +- org.scala-lang.modules:scala-parser-combinators_2.11:jar:1.0.2:compile 
[INFO] | +- org.scala-lang:scala-library:jar:2.11.2:compile 
[INFO] | +- org.apache.kafka:kafka-clients:jar:0.8.2-V3-PATCH:compile 
[INFO] | | \- net.jpountz.lz4:lz4:jar:1.2.0:compile 
[INFO] +- com.company.foo:ec:jar:2.8.0-SNAPSHOT:compile 
[INFO] | +- com.company.foo:solr:jar:2.8.0-SNAPSHOT:compile 
[INFO] | +- org.apache.kafka:kafka_2.10:jar:0.8.1.1:compile 

ответ

3

Из документации: «По умолчанию Maven будет решать конфликты с ближайшими победами подходом» [Resolving Conflicts]. Это переводит на сбор org.apache.kafka: kafka_2.11: jar: 0.8.2-V3-PATCH: скомпилируйте в вашем примере. См. Также Transitive Dependencies

Подход с самой близкой победой выбирает версию зависимостей, ближайшую к левому в выводе дерева зависимостей Maven. Этот подход выбирает зависимость, основанную на том, насколько они близки к вашей декларации зависимости pom.xml. Если вы объявляете зависимость конфликтующим-2.0 явно в своем пом, что зависимость будет выбрана Maven. Если объявить о зависимости B, которая, в свою очередь, зависит от противоречивого-1,0, то противоречивым-1,0 будет рассматриваться как дальше, что из противоречивого-2.0 в своих зависимости.

В качестве примера:

[INFO] +- conflicting-2.0 (dependency declared in your pom, level 0)  
    [INFO] +- B     (dependency declared in your pom, level 0) 
    [INFO] | \- conflicting-1.0 (dependency declared in B,  level 1) 

В этом случае Maven выбрал бы конфликтующие-2.0 в правой версии для зависимости, так как она объявлена ​​явно в ПОМ проекта.

Чтобы быть уверенным, вы можете вызвать дерево зависимостей с -Dverbose флагом (mvn dependency:tree -Dverbose) и мавена покажет вам, какие банки не выбрали:

\- (org.apache.kafka:kafka_2.10:jar:0.8.1.1:compile - omitted for conflict with 2.11) 
+1

Спасибо и двойное спасибо за -Dverbose наконечник ! – user2250246

+0

Один вопрос, хотя, я не вижу, как выбранная версия - ближайшая победа. Чем он ближе всего? – user2250246

+1

Я обновил свой ответ, пытаясь объяснить. – fabiim

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

  • Нет связанных вопросов^_^