1

我正在开发一个基于 java 的应用程序,它产生/使用 kafka 消息。在我的 pom 中,我有:

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

我也在使用一个 Maven 强制插件。在 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 的问题。

4

1 回答 1

0

Kafka 构建显然不使用强制执行器运行,因此我们不小心将相同的依赖项用不同的版本拉入了两次。

我的建议:

  1. 使用 Exclude 在您自己的项目中解决此问题
  2. 打开 Apache Kafka 的票证 (issues.apache.org/jira/browse/KAFKA) 并解释问题。也许你甚至可以提供一个解决问题的拉取请求(http://kafka.apache.org/contributing.html
于 2015-12-17T03:40:45.467 回答