Включая kafka maven, что может привести к ошибкам сходимости
Я разрабатываю Java-приложение, которое создает / потребляет сообщения Кафки. У меня в поме есть:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.9.2</artifactId>
<version>0.8.2.2</version>
</dependency>
Я также использую плагин Maven Enforcer. В eclipse, который, похоже, не вызывает плагин принудительного применения, программа собирается и работает нормально. Вне затмения, когда я делаю 'mvn clean package', принудительное средство выдает ошибку сходимости:
Dependency convergence error for org.apache.zookeeper:zookeeper:3.4.6 paths to dependency are:
+-com.mystuff:1.0
+-org.apache.kafka:kafka_2.9.2:0.8.2.2
+-org.apache.zookeeper:zookeeper:3.4.6
and
+-com.mystuff:1.0
+-org.apache.kafka:kafka_2.9.2:0.8.2.2
+-com.101tec:zkclient:0.3
+-org.apache.zookeeper:zookeeper:3.3.1
Какой рекомендуемый способ справиться с этим? Конечно, я мог бы исключить транзитивную зависимость zookeeper и добавить ее явно, но мне кажется странным, что я не смог бы построить проект kafka, не прибегая к этому. Обычно вы исключаете транзитивные зависимости, когда они входят в разные версии из разных зависимостей верхнего уровня. Здесь - у меня проблема с одной и только одной зависимостью верхнего уровня, kafka.
1 ответ
Очевидно, что сборка Kafka не работает с принудительным механизмом, поэтому мы случайно получаем одну и ту же зависимость дважды с разными версиями.
Мое предложение:
- Используйте исключение, чтобы разрешить это в вашем собственном проекте
- Откройте тикет для Apache Kafka (Issues.apache.org/jira/browse/KAFKA) и объясните проблему. Возможно, вы даже можете отправить запрос на удаление, который решит проблему ( http://kafka.apache.org/contributing.html)