Rules
- java_binary
- java_import
- java_library
- java_lite_proto_library
- java_proto_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
View rule sourcejava_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
  Builds a Java archive ("jar file"), plus a wrapper shell script with the same name as the rule.
  The wrapper shell script uses a classpath that includes, among other things, a jar file for each
  library on which the binary depends. When running the wrapper shell script, any nonempty
  JAVABIN environment variable will take precedence over the version specified via
  Bazel's --java_runtime_version flag.
  The wrapper script accepts several unique flags. Refer to
  //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
  for a list of configurable flags and environment variables accepted by the wrapper.
Implicit output targets
- name.jar: A Java archive, containing the class files and other resources corresponding to the binary's direct dependencies.
- name-src.jar: An archive containing the sources ("source jar").
- name_deploy.jar: A Java archive suitable for deployment (only built if explicitly requested).- Building the - <name>_deploy.jartarget for your rule creates a self-contained jar file with a manifest that allows it to be run with the- java -jarcommand or with the wrapper script's- --singlejaroption. Using the wrapper script is preferred to- java -jarbecause it also passes the JVM flags and the options to load native libraries.- The deploy jar contains all the classes that would be found by a classloader that searched the classpath from the binary's wrapper script from beginning to end. It also contains the native libraries needed for dependencies. These are automatically loaded into the JVM at runtime. - If your target specifies a launcher attribute, then instead of being a normal JAR file, the _deploy.jar will be a native binary. This will contain the launcher plus any native (C++) dependencies of your rule, all linked into a static binary. The actual jar file's bytes will be appended to that native binary, creating a single binary blob containing both the executable and the Java code. You can execute the resulting jar file directly like you would execute any native binary. 
- name_deploy-src.jar: An archive containing the sources collected from the transitive closure of the target. These will match the classes in the- deploy.jarexcept where jars have no matching source jar.
  A deps attribute is not allowed in a java_binary rule without
  srcs; such a rule requires a
  main_class provided by
  runtime_deps.
The following code snippet illustrates a common mistake:
java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)
Do this instead:
java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. It is good practice to use the name of the source file that is the main entry point of the application (minus the extension). For example, if your entry point is called Main.java, then your name could beMain. | 
| deps | List of labels; default is  depsat
          Typical attributes defined by
          most build rules. | 
| srcs | List of labels; default is  
            Source files of type  
            Source files of type  
            Rules: if the rule (typically  
            This argument is almost always required, except if a
             | 
| resources | List of labels; default is  
            If resources are specified, they will be bundled in the jar along with the usual
             Resources may be source files or generated files. | 
| classpath_resources | List of labels; default is  
            A list of resources that must be located at the root of the java tree. This attribute's
            only purpose is to support third-party libraries that require that their resources be
            found on the classpath as exactly  | 
| create_executable | Boolean; nonconfigurable; default is  java_single_jarinstead. | 
| deploy_env | List of labels; default is  java_binarytargets which represent the deployment
        environment for this binary.
        Set this attribute when building a plugin which will be loaded by anotherjava_binary.Setting this attribute excludes all dependencies from the runtime classpath (and the deploy jar) of this binary that are shared between this binary and the targets specified in deploy_env. | 
| deploy_manifest_lines | List of strings; default is  META-INF/manifest.mffile generated for the*_deploy.jartarget. The contents of this attribute are not subject
          to "Make variable" substitution. | 
| javacopts | List of strings; default is  These compiler options are passed to javac after the global compiler options. | 
| jvm_flags | List of strings; default is  The wrapper script for a Java binary includes a CLASSPATH definition
          (to find all the dependent jars) and invokes the right Java interpreter.
          The command line generated by the wrapper script includes the name of
          the main class followed by a  Note that this attribute has no effect on  | 
| launcher | Label; default is  bin/javaprogram included with the JDK.
          The target must be acc_binary. Anycc_binarythat
          implements the
          
          Java Invocation API can be specified as a value for this attribute.By default, Bazel will use the normal JDK launcher (bin/java or java.exe). The related  Note that your native (C++, SWIG, JNI) dependencies will be built differently depending on whether you are using the JDK launcher or another launcher: 
 When using any launcher other than the default JDK launcher, the format
          of the  | 
| main_class | String; default is  main()method to use as entry point.
          If a rule uses this option, it does not need asrcs=[...]list.
          Thus, with this attribute one can make an executable from a Java library that already
          contains one or moremain()methods.
            The value of this attribute is a class name, not a source file. The class must be
            available at runtime: it may be compiled by this rule (from  | 
| plugins | List of labels; default is  java_pluginspecified in this attribute will be run whenever this rule
          is built. A library may also inherit plugins from dependencies that useexported_plugins. Resources
          generated by the plugin will be included in the resulting jar of this rule. | 
| resource_jars | List of labels; default is  | 
| resource_strip_prefix | String; default is  
            If specified, this path prefix is stripped from every file in the  | 
| runtime_deps | List of labels; default is  deps, these will appear on the runtime classpath, but unlike
          them, not on the compile-time classpath. Dependencies needed only at runtime should be
          listed here. Dependency-analysis tools should ignore targets that appear in bothruntime_depsanddeps. | 
| stamp | Integer; default is  
 Stamped binaries are not rebuilt unless their dependencies change. | 
| use_launcher | Boolean; default is  If this attribute is set to false, the
          launcher attribute  and the related
           | 
| use_testrunner | Boolean; default is  com.google.testing.junit.runner.BazelTestRunner) class as the
          main entry point for a Java program, and provide the test class
          to the test runner as a value ofbazel.test_suitesystem property.
          You can use this to override the default
          behavior, which is to use test runner forjava_testrules,
          and not use it forjava_binaryrules.  It is unlikely
          you will want to do this.  One use is forAllTestrules that are invoked by another rule (to set up a database
          before running the tests, for example).  TheAllTestrule must be declared as ajava_binary, but should
          still use the test runner as its main entry point.
          The name of a test runner class can be overridden withmain_classattribute. | 
java_import
View rule sourcejava_import(name, deps, data, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, visibility)
  This rule allows the use of precompiled .jar files as
  libraries for java_library and
  java_binary rules.
Examples
    java_import(
        name = "maven_model",
        jars = [
            "maven_model/maven-aether-provider-3.2.3.jar",
            "maven_model/maven-model-3.2.3.jar",
            "maven_model/maven-model-builder-3.2.3.jar",
        ],
    )
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| deps | List of labels; default is  | 
| constraints | List of strings; nonconfigurable; default is  | 
| exports | List of labels; default is  | 
| jars | List of labels; requiredThe list of JAR files provided to Java targets that depend on this target. | 
| neverlink | Boolean; default is  tools.jarfor anything running on
        a standard JDK. | 
| proguard_specs | List of labels; default is  android_binarytarget depending on this library.
        The files included here must only have idempotent rules, namely -dontnote, -dontwarn,
        assumenosideeffects, and rules that start with -keep. Other options can only appear inandroid_binary's proguard_specs, to ensure non-tautological merges. | 
| runtime_deps | List of labels; default is  | 
| srcjar | Label; default is  | 
java_library
View rule sourcejava_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)
This rule compiles and links sources into a .jar file.
Implicit output targets
- libname.jar: A Java archive containing the class files.
- libname-src.jar: An archive containing the sources ("source jar").
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| deps | List of labels; default is  depsat
        Typical attributes defined by
        most build rules.
          The jars built by  
          By contrast, targets in the  | 
| srcs | List of labels; default is  
            Source files of type  
            Source files of type  
            Rules: if the rule (typically  
            This argument is almost always required, except if a
             | 
| data | List of labels; default is  dataat
        Typical attributes defined by
        most build rules.
          When building a  | 
| resources | List of labels; default is  
            If resources are specified, they will be bundled in the jar along with the usual
             Resources may be source files or generated files. | 
| exported_plugins | List of labels; default is  java_plugins (e.g. annotation
        processors) to export to libraries that directly depend on this library.
          The specified list of  | 
| exports | List of labels; default is  
          Listing rules here will make them available to parent rules, as if the parents explicitly
          depended on these rules. This is not true for regular (non-exported)  
          Summary: a rule X can access the code in Y if there exists a dependency
          path between them that begins with a  
          Assume A depends on B and B depends on C. In this case
          C is a transitive dependency of A, so changing C's sources and rebuilding A will
          correctly rebuild everything. However A will not be able to use classes in C. To allow
          that, either A has to declare C in its  The closure of exported libraries is available to all direct parent rules. Take a slightly different example: A depends on B, B depends on C and D, and also exports C but not D. Now A has access to C but not to D. Now, if C and D exported some libraries, C' and D' respectively, A could only access C' but not D'. 
          Important: an exported rule is not a regular dependency. Sticking to the previous example,
          if B exports C and wants to also use C, it has to also list it in its own
           | 
| javacopts | List of strings; default is  These compiler options are passed to javac after the global compiler options. | 
| neverlink | Boolean; default is  tools.jarfor anything
        running on a standard JDK.
          Note that  If the runtime library differs from the compilation library then you must ensure that it differs only in places that the JLS forbids compilers to inline (and that must hold for all future versions of the JLS). | 
| plugins | List of labels; default is  java_pluginspecified in this attribute will be run whenever this rule
          is built. A library may also inherit plugins from dependencies that useexported_plugins. Resources
          generated by the plugin will be included in the resulting jar of this rule. | 
| proguard_specs | List of labels; default is  android_binarytarget depending on this library.
        The files included here must only have idempotent rules, namely -dontnote, -dontwarn,
        assumenosideeffects, and rules that start with -keep. Other options can only appear inandroid_binary's proguard_specs, to ensure non-tautological merges. | 
| resource_jars | List of labels; default is  | 
| resource_strip_prefix | String; default is  
            If specified, this path prefix is stripped from every file in the  | 
| runtime_deps | List of labels; default is  deps, these will appear on the runtime classpath, but unlike
          them, not on the compile-time classpath. Dependencies needed only at runtime should be
          listed here. Dependency-analysis tools should ignore targets that appear in bothruntime_depsanddeps. | 
java_lite_proto_library
View rule sourcejava_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
java_lite_proto_library generates Java code from .proto files.
deps must point to proto_library
 rules.
Example:
java_library(
    name = "lib",
    deps = [":foo"],
)
java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)
proto_library(
    name = "bar",
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| deps | List of labels; default is  proto_libraryrules to generate Java code for. | 
java_proto_library
View rule sourcejava_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
java_proto_library generates Java code from .proto files.
deps must point to proto_library
 rules.
Example:
java_library(
    name = "lib",
    deps = [":foo_java_proto"],
)
java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)
proto_library(
    name = "foo_proto",
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| deps | List of labels; default is  proto_libraryrules to generate Java code for. | 
java_test
View rule sourcejava_test(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)
A java_test() rule compiles a Java test. A test is a binary wrapper around your
test code. The test runner's main method is invoked instead of the main class being compiled.
Implicit output targets
- name.jar: A Java archive.
- name_deploy.jar: A Java archive suitable for deployment. (Only built if explicitly requested.) See the description of the- name_deploy.jaroutput from java_binary for more details.
See the section on java_binary() arguments. This rule also supports all attributes common to all test rules (*_test).
Examples
java_library(
    name = "tests",
    srcs = glob(["*.java"]),
    deps = [
        "//java/com/foo/base:testResources",
        "//java/com/foo/testing/util",
    ],
)
java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":tests",
        "//util/mysql",
    ],
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| deps | List of labels; default is  depsat
          Typical attributes defined by
          most build rules. | 
| srcs | List of labels; default is  
            Source files of type  
            Source files of type  
            Rules: if the rule (typically  
            This argument is almost always required, except if a
             | 
| resources | List of labels; default is  
            If resources are specified, they will be bundled in the jar along with the usual
             Resources may be source files or generated files. | 
| classpath_resources | List of labels; default is  
            A list of resources that must be located at the root of the java tree. This attribute's
            only purpose is to support third-party libraries that require that their resources be
            found on the classpath as exactly  | 
| create_executable | Boolean; nonconfigurable; default is  java_single_jarinstead. | 
| deploy_manifest_lines | List of strings; default is  META-INF/manifest.mffile generated for the*_deploy.jartarget. The contents of this attribute are not subject
          to "Make variable" substitution. | 
| javacopts | List of strings; default is  These compiler options are passed to javac after the global compiler options. | 
| jvm_flags | List of strings; default is  The wrapper script for a Java binary includes a CLASSPATH definition
          (to find all the dependent jars) and invokes the right Java interpreter.
          The command line generated by the wrapper script includes the name of
          the main class followed by a  Note that this attribute has no effect on  | 
| launcher | Label; default is  bin/javaprogram included with the JDK.
          The target must be acc_binary. Anycc_binarythat
          implements the
          
          Java Invocation API can be specified as a value for this attribute.By default, Bazel will use the normal JDK launcher (bin/java or java.exe). The related  Note that your native (C++, SWIG, JNI) dependencies will be built differently depending on whether you are using the JDK launcher or another launcher: 
 When using any launcher other than the default JDK launcher, the format
          of the  | 
| main_class | String; default is  main()method to use as entry point.
          If a rule uses this option, it does not need asrcs=[...]list.
          Thus, with this attribute one can make an executable from a Java library that already
          contains one or moremain()methods.
            The value of this attribute is a class name, not a source file. The class must be
            available at runtime: it may be compiled by this rule (from  | 
| plugins | List of labels; default is  java_pluginspecified in this attribute will be run whenever this rule
          is built. A library may also inherit plugins from dependencies that useexported_plugins. Resources
          generated by the plugin will be included in the resulting jar of this rule. | 
| resource_jars | List of labels; default is  | 
| resource_strip_prefix | String; default is  
            If specified, this path prefix is stripped from every file in the  | 
| runtime_deps | List of labels; default is  deps, these will appear on the runtime classpath, but unlike
          them, not on the compile-time classpath. Dependencies needed only at runtime should be
          listed here. Dependency-analysis tools should ignore targets that appear in bothruntime_depsanddeps. | 
| stamp | Integer; default is  
 Stamped binaries are not rebuilt unless their dependencies change. | 
| test_class | String; default is  
          By default, if this argument is not defined then the legacy mode is used and the
          test arguments are used instead. Set the  
          This attribute specifies the name of a Java class to be run by
          this test. It is rare to need to set this. If this argument is omitted,
          it will be inferred using the target's  
          For JUnit3, the test class needs to either be a subclass of
           
          This attribute allows several  | 
| use_launcher | Boolean; default is  If this attribute is set to false, the
          launcher attribute  and the related
           | 
| use_testrunner | Boolean; default is  com.google.testing.junit.runner.BazelTestRunner) class as the
          main entry point for a Java program, and provide the test class
          to the test runner as a value ofbazel.test_suitesystem property.
          You can use this to override the default
          behavior, which is to use test runner forjava_testrules,
          and not use it forjava_binaryrules.  It is unlikely
          you will want to do this.  One use is forAllTestrules that are invoked by another rule (to set up a database
          before running the tests, for example).  TheAllTestrule must be declared as ajava_binary, but should
          still use the test runner as its main entry point.
          The name of a test runner class can be overridden withmain_classattribute. | 
java_package_configuration
View rule sourcejava_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)
Configuration to apply to a set of packages.
Configurations can be added to
java_toolchain.javacoptss.
Example:
java_package_configuration(
    name = "my_configuration",
    packages = [":my_packages"],
    javacopts = ["-Werror"],
)
package_group(
    name = "my_packages",
    packages = [
        "//com/my/project/...",
        "-//com/my/project/testing/...",
    ],
)
java_toolchain(
    ...,
    package_configuration = [
        ":my_configuration",
    ]
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| data | List of labels; default is  | 
| javacopts | List of strings; default is  | 
| packages | List of labels; default is  package_groups
        the configuration should be applied to. | 
java_plugin
View rule sourcejava_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)
  java_plugin defines plugins for the Java compiler run by Bazel. At the moment, the
  only supported kind of plugins are annotation processors. A java_library or
  java_binary rule can run plugins by depending on them via the plugins
  attribute. A java_library can also automatically export plugins to libraries that
  directly depend on it using
  exported_plugins.
Implicit output targets
- libname.jar: A Java archive.
  Arguments are identical to java_library, except
  for the addition of the processor_class argument.
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| deps | List of labels; default is  depsat
        Typical attributes defined by
        most build rules.
          The jars built by  
          By contrast, targets in the  | 
| srcs | List of labels; default is  
            Source files of type  
            Source files of type  
            Rules: if the rule (typically  
            This argument is almost always required, except if a
             | 
| data | List of labels; default is  dataat
        Typical attributes defined by
        most build rules.
          When building a  | 
| resources | List of labels; default is  
            If resources are specified, they will be bundled in the jar along with the usual
             Resources may be source files or generated files. | 
| generates_api | Boolean; default is  If a rule uses an API-generating annotation processor, other rules depending on it can refer to the generated code only if their compilation actions are scheduled after the generating rule. This attribute instructs Bazel to introduce scheduling constraints when --java_header_compilation is enabled. WARNING: This attribute affects build performance, use it only if necessary. | 
| javacopts | List of strings; default is  These compiler options are passed to javac after the global compiler options. | 
| neverlink | Boolean; default is  tools.jarfor anything
        running on a standard JDK.
          Note that  If the runtime library differs from the compilation library then you must ensure that it differs only in places that the JLS forbids compilers to inline (and that must hold for all future versions of the JLS). | 
| output_licenses | Licence type; default is  common attributes
         | 
| plugins | List of labels; default is  java_pluginspecified in this attribute will be run whenever this rule
          is built. A library may also inherit plugins from dependencies that useexported_plugins. Resources
          generated by the plugin will be included in the resulting jar of this rule. | 
| processor_class | String; default is  | 
| proguard_specs | List of labels; default is  android_binarytarget depending on this library.
        The files included here must only have idempotent rules, namely -dontnote, -dontwarn,
        assumenosideeffects, and rules that start with -keep. Other options can only appear inandroid_binary's proguard_specs, to ensure non-tautological merges. | 
| resource_jars | List of labels; default is  | 
| resource_strip_prefix | String; default is  
            If specified, this path prefix is stripped from every file in the  | 
java_runtime
View rule sourcejava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_ct_sym, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, version, visibility)
Specifies the configuration for a Java runtime.
Example:
java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| srcs | List of labels; default is  | 
| default_cds | Label; default is  java_runtime. When hermetic
        is enabled for ajava_binarytarget and if the target does not
        provide its own CDS archive by specifying theclasslistattribute,
        thejava_runtimedefault CDS is packaged in the hermetic deploy JAR. | 
| hermetic_srcs | List of labels; default is  | 
| java | Label; default is  | 
| java_home | String; default is  srcsandjavaattributes must be empty. | 
| lib_ct_sym | Label; default is  --release. If not specified and
        there is exactly one file insrcswhose path ends with/lib/ct.sym, that file is used. | 
| lib_modules | Label; default is  | 
| version | Integer; default is  Runtime.version().feature(). | 
java_toolchain
View rule sourcejava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
Specifies the configuration for the Java compiler. Which toolchain to be used can be changed through the --java_toolchain argument. Normally you should not write those kind of rules unless you want to tune your Java compiler.
Examples
A simple example would be:
java_toolchain(
    name = "toolchain",
    source_version = "7",
    target_version = "7",
    bootclasspath = ["//tools/jdk:bootclasspath"],
    xlint = [ "classfile", "divzero", "empty", "options", "path" ],
    javacopts = [ "-g" ],
    javabuilder = ":JavaBuilder_deploy.jar",
)
Arguments
| Attributes | |
|---|---|
| name | Name; required A unique name for this target. | 
| android_lint_data | List of labels; default is  | 
| android_lint_jvm_opts | List of strings; default is  | 
| android_lint_opts | List of strings; default is  | 
| android_lint_package_configuration | List of labels; default is  | 
| android_lint_runner | Label; default is  | 
| bootclasspath | List of labels; default is  | 
| deps_checker | List of labels; default is  | 
| forcibly_disable_header_compilation | Boolean; default is  | 
| genclass | List of labels; requiredLabel of the GenClass deploy jar. | 
| header_compiler | List of labels; default is  | 
| header_compiler_direct | List of labels; default is  This tool does not support annotation processing. | 
| ijar | List of labels; requiredLabel of the ijar executable. | 
| jacocorunner | Label; default is  | 
| java_runtime | Label; requiredThe java_runtime to use with this toolchain. It defaults to java_runtime in execution configuration. | 
| javabuilder | List of labels; requiredLabel of the JavaBuilder deploy jar. | 
| javabuilder_data | List of labels; default is  | 
| javabuilder_jvm_opts | List of strings; default is  | 
| javac_supports_multiplex_workers | Boolean; default is  | 
| javac_supports_worker_multiplex_sandboxing | Boolean; default is  | 
| javac_supports_workers | Boolean; default is  | 
| javacopts | List of strings; default is  | 
| jvm_opts | List of strings; default is  | 
| oneversion | Label; default is  | 
| oneversion_allowlist_for_tests | Label; default is  | 
| oneversion_whitelist | Label; default is  | 
| package_configuration | List of labels; default is  | 
| proguard_allowlister | Label; default is  | 
| resourcejar | List of labels; default is  | 
| singlejar | List of labels; requiredLabel of the SingleJar deploy jar. | 
| source_version | String; default is  | 
| target_version | String; default is  | 
| timezone_data | Label; default is  | 
| tools | List of labels; default is  | 
| turbine_data | List of labels; default is  | 
| turbine_jvm_opts | List of strings; default is  | 
| xlint | List of strings; default is  |