包括kafka maven必然会导致收敛错误

Including kafka maven bound to result in convergence errors

我正在开发一个基于 java 的应用程序,其中包含 produces/consumes kafka 消息。在我的 pom 中我有:

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.9.2</artifactId>
        <version>0.8.2.2</version>
    </dependency>

我也在使用 Maven enforcer 插件。 在似乎没有调用 enforcer 插件的 eclipse 中,程序构建并运行良好。在 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 的问题。

Kafka build 显然 运行 没有强制执行器,所以我们不小心用不同的版本引入了相同的依赖项。

我的建议:

  1. 在您自己的项目中使用 Exclude 解决这个问题
  2. 给Apache Kafka(issues.apache.org/jira/browse/KAFKA)开工单,说明问题。也许您甚至可以贡献一个解决问题的拉取请求 (http://kafka.apache.org/contributing.html)