У меня есть проект P1, который создает банку. Этот проект имеет родительский POM, P1-PARENT. P1-Parent включает в себя следующее:
<dependencyManagement>
<!-- Kafka uses Zookeeper 3.3.4, but Curator requires 3.4.5. To resolve
we specify 3.4.5 so all projects using either Kafka or Curator will
get the later version which is compatible with both projects. -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>2.2.0-incubating</version>
</dependency>
<!-- A bunch of other irrelevant stuff here -->
</dependencyManagement>
Это работает - вывод "mvn dependency: tree" включает в себя:
[INFO] +- org.apache.kafka:kafka_2.10:jar:0.8.0:compile
[INFO] | +- org.apache.zookeeper:zookeeper:jar:3.4.5:compile (version managed from 3.3.4)
Обратите внимание, что это единственная зависимость от zookeeper (проверяется через "mvn dependency: tree | grep zoo".
У меня есть несколько других проектов, которые также наследуются от P1-PARENT, и все работает нормально, все они тянут ZooKeeper 3.4.5. Тем не менее, мой коллега недавно начал использовать P1 в одном из своих проектов. Их проект не наследуется от P1-PARENT. Транзитивная зависимость, получаемая от P1, - ZooKeeper 3.3.4, а не 3.4.5. Мы проверили через "mvn dependency: tree", что они получают zookeeper.3.3.4 в качестве транзитивной зависимости Kafka (например, результат выглядит идентично тому, что я вставил выше, но версия 3.3.4, и это не так 't включить бит "(версия управляется..." ).Кроме того, как и мои проекты, единственная зависимость, которую они имеют от ZooKeeper (транзитивная или иначе), находится через P1 (проверяется зависимостью: tree и grep). Вопрос в том, почему. Когда они включают P1, не следует ли maven смотреть на родительский POM P1 при определении транзитивных зависимостей P1?
Я использую Maven 3.0.5. Они используют версии 3.0.3 и 3.1.1 и видят проблему с обеих этих версий.