【问题标题】:How to depend on a test Maven jar in Bazel?如何依赖 Bazel 中的测试 Maven jar?
【发布时间】:2018-05-16 00:49:53
【问题描述】:

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

【问题讨论】:

  • 关于 Gradle 中相同功能的问题:stackoverflow.com/questions/20224260/…
  • 你可以为测试写一个单独的maven_jar 规则吗?
  • 这正是我想要弄清楚的:)
  • 请注意,问题是关于同一工件同时提供普通和测试 jar 的情况。访问问题中指向 Maven Central 的链接以获取示例。

标签: java dependency-management bazel


【解决方案1】:

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",
)

【讨论】:

  • 终于测试了它:像宣传的那样工作,谢谢亚当。云雀规则是否可以安全地用作替代品,还是需要考虑一些事情?例如。为什么它不是默认值?
【解决方案2】:

我认为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 提交功能请求。

【讨论】:

  • 我也完全按照您的建议尝试了,但没有运气。如果 Adam 指出的 Skylark 规则支持该功能,那么提交问题是否有任何意义?据我了解,云雀最终会取代当前一代的规则,还是不是真的?
  • raindev,我很高兴它有效!如果 Skylark 实现有效,那么提交错误是没有意义的。谢谢!
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多