如何依赖 Bazel 中的测试 Maven jar?

How to depend on a test Maven jar in Bazel?

除了主 jar 之外,一些 Maven 工件提供了一个单独的测试 jar,其中包含 类 以帮助编写使用依赖项的测试。 kafka-streams 就是一个例子。在 Gradle 中,可以使用 classifier: "test" 来依赖这样的 jar(如果测试 jar 具有 -test.jar 后缀),而在 Maven 中则为 <type>test-jar</type>。如何将测试 jar 添加到 Bazel 工作区?

我认为 maven_jar 缺少此功能。

我可以为主 jar 写一个规则:

maven_jar(
    name = "org_apache_kafka",
    artifact = "org.apache.kafka:kafka-streams:1.0.0",
    sha1 = "a6c87c367176beb7650eb2df173fd9fe6e38656f",
)

但是我不能为测试 jar 写一个,这没有用:

maven_jar(
    name = "org_apache_kafka_test",
    artifact = "org.apache.kafka:kafka-streams:1.0.0-test",
    sha1 = "b275b72148aad7a59cc12f1005507d61fc0ae77b",
)

我建议在 https://github.com/bazelbuild/bazel/issues/new 提交功能请求。

Skylark maven_jar 实现支持此功能,其工件语法为 group:artifact:version:packaging:classifier

load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
maven_jar(
    name = "org_apache_kafka_test",
    artifact = "org.apache.kafka:kafka-streams:1.0.0:jar:test",
    sha1 = "b275b72148aad7a59cc12f1005507d61fc0ae77b",
)