我正在开发一个基于java的应用程序,它可以生成/使用kafka消息。在我的pom中,我有:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.9.2</artifactId>
<version>0.8.2.2</version>
</dependency>
我还使用了maven enforcer插件。在eclipse中,似乎没有调用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条答案
按热度按时间hsgswve41#
Kafka构建显然不能与执行器一起运行,因此我们意外地使用不同的版本两次拉入相同的依赖项。
我的建议是:
在您自己的项目中使用exclude来解决此问题
打开ApacheKafka的问题(issues.apache.org/jira/browse/kafka)并解释问题。也许您甚至可以提交一个pull请求来修复这个问题(http://kafka.apache.org/contributing.html)