Gradle 与测试分类器的依赖关系

Gradle dependency with test classifier

我一直在尝试引用 artefact,但运气不佳。

使用 maven 我没有问题:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.13</artifactId>
    <version>3.0.0</version>
    <classifier>test</classifier>
</dependency>

Maven 选择了正确的工件。

然而,对于 gradle,它似乎总是包含没有分类器的人工制品,无论我尝试什么:

implementation 'org.apache.kafka:kafka_2.13:3.0.0:test'

我已经阅读了 gradle 文档,它建议使用这种语法,也许它与这个特定的人工制品有关?

更新

我的目标是使用 spring-kafka-test。我们的内部工件存储库未设置为使用 pom 分辨率,这就是我需要手动添加传递的原因。

我已经排除了它可能是我们内部存储库的事实,仅使用 maven central;我得到了相同的结果。

我设法包含 提到的罐子,其中:

dependencies {
  implementation ('org.apache.kafka:kafka_2.13:3.0.0:test') {
    exclude group: 'org.apache.kafka' // or finer grained, if we like
  }
  ...
}

另请参阅:How to specify a classifier in a gradle dependency's dependency?

但是

你对maven的假设也是错误的:

Maven 全部拉取! (在 module-test-parents 中没有定义依赖项。)

要在 Maven 中实现相同(甚至更多),我们还必须:

  <dependencies>
    <dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka_2.13</artifactId>
      <version>3.0.0</version>
      <classifier>test</classifier>
      <exclusions>
        <exclusion> <!--sledge hammer -->
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <!-- or selectively ... -->
      </exclusions>
    </dependency>
  </dependencies>

在 gradle 中,根据(已测试):

implementation ('org.apache.kafka:kafka_2.13:3.0.0:test'){
  exclude group: '*'
}