如何解决 bazel 中的 java_toolchain

How to resolve the java_toolchain in bazel

Bazel 讨论了如何创建 java 工具链,例如

java_toolchain(
  name = "my_toolchain",
  encoding = "UTF-8",
  source_version = "8",
  target_version = "8",
  misc = [
    "-extra_checks:on",
  ],
)

来自 a blog post on configuring java builds。但是,如何从规则中解析 java 工具链?

java_toolchain = ctx.toolchains["@bazel_tools//<something here>"]

我期待类似上面的内容,但我找不到关于 bazel java rules documentation page 的文档。

你说得对,这是访问 Java 工具链的首选方式。不幸的是,Java 规则目前不支持工具链解析,所以这是不可能的,并且 Java 工具链需要通过依赖于 @bazel_tools/ 的私有属性来访问/tools/jdk:current_java_toolchain。有关示例,请参见 default_javacopts 规则。

很快就会开始解决这个问题,我们一定会在 Java 规则支持工具链解析并且按您期望的方式工作时向社区宣布。