0

I'd like to use bazel query to get more details about the Java toolchain. Specifically Java source level to be used.

From the java_library target I was able to query for the Java toolchain:

  rule_input: "@bazel_tools//tools/jdk:current_java_toolchain"
  rule_input: "@bazel_tools//tools/jdk:java_plugins_flag_alias"
  rule_input: "@bazel_tools//tools/jdk:proguard_whitelister"
  rule_input: "@bazel_tools//tools/jdk:toolchain_type"

What query can I use to get the source level the target is using?

I tried bazel query "@bazel_tools//tools/jdk:current_java_toolchain" --output=proto but the output doesn't seem to contain that information.

Gunnar
  • 2,264
  • 17
  • 31

1 Answers1

3

Your task lies fundamentally outside the capabilities of query because the Java toolchain is not selected until after loading, the phase query operates on. (In particular, query cannot consider --java_language_version or other command line flags.) However, cquery can accomplish the task:

$ bazel cquery "@bazel_tools//tools/jdk:current_java_toolchain" --output starlark --starlark:expr 'providers(target)["JavaToolchainInfo"].source_version'
11

Keep in mind that a complex build could use multiple Java toolchains, leaving your inquiry ill-defined.

Benjamin Peterson
  • 19,297
  • 6
  • 32
  • 39