规则
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
查看规则来源java_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, 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, neverlink, output_licenses, plugins, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
  构建 Java 归档文件(“jar 文件”),以及一个与规则同名的封装 shell 脚本。
  封装容器 shell 脚本使用一个类路径,该类路径包含二进制文件所依赖的每个库的 jar 文件。运行封装容器 shell 脚本时,任何非空的 JAVABIN 环境变量都将优先于通过 Bazel 的 --java_runtime_version 标志指定的版本。
  封装容器脚本接受多个独特的标志。如需查看封装容器接受的可配置标志和环境变量的列表,请参阅 //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt。
隐式输出目标
- name.jar:一个 Java 归档文件,包含与二进制文件的直接依赖项对应的类文件和其他资源。
- name-src.jar:包含源代码(“源代码 JAR”)的归档文件。
- name_deploy.jar:适合部署的 Java 归档(仅在明确请求时构建)。- 为规则构建 - <name>_deploy.jar目标会创建一个包含清单的自包含 jar 文件,该清单允许使用- java -jar命令或包装器脚本的- --singlejar选项运行该文件。最好使用封装容器脚本,而不是- java -jar,因为前者还会传递 JVM 标志和用于加载原生库的选项。- 部署 JAR 包含类加载器从二进制文件的封装脚本的开头到结尾搜索类路径时会找到的所有类。它还包含依赖项所需的原生库。这些文件会在运行时自动加载到 JVM 中。 - 如果您的目标指定了 启动器属性,那么 _deploy.jar 将是一个原生二进制文件,而不是普通的 JAR 文件。这将包含启动器以及规则的所有原生 (C++) 依赖项,所有这些都链接到静态二进制文件中。实际的 JAR 文件的字节将附加到该原生二进制文件中,从而创建一个包含可执行文件和 Java 代码的单个二进制 blob。您可以直接执行生成的 jar 文件,就像执行任何原生二进制文件一样。 
- name_deploy-src.jar:一个归档文件,其中包含从目标传递闭包收集的来源。这些类将与- deploy.jar中的类匹配,但 jar 没有匹配的源 jar 的情况除外。
最好使用作为应用主要入口点的源文件的名称(不含扩展名)。例如,如果您的入口点名为 Main.java,则您的名称可以是 Main。
  在不含 srcs 的 java_binary 规则中不允许使用 deps 属性;此类规则需要由 runtime_deps 提供的 main_class。
以下代码段展示了一个常见错误:
java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)
请改为执行以下操作:
java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| deps | 标签列表;默认值为  deps的一般注释,请参阅大多数 build 规则定义的典型属性。 | 
| srcs | 标签列表;默认值为  
系统会编译  
类型为  
规则:如果规则(通常为  
此实参几乎总是必需的,除非  | 
| data | 标签列表;默认值为  data的一般注释。 | 
| resources | 标签列表;默认值为  资源可以是源文件,也可以是生成的文件。 
如果指定了资源,这些资源将与编译生成的常规  | 
| add_exports | 字符串列表;默认值为  module或package。这与 javac 和 JVM --add-exports= 标志相对应。 | 
| add_opens | 字符串列表;默认值为  module或package。这对应于 javac 和 JVM --add-opens= 标志。 | 
| bootclasspath | 标签;默认值为  | 
| classpath_resources | 标签列表;默认值为  
必须位于 Java 树根目录中的资源列表。此属性的唯一目的是支持第三方库,这些库要求其资源在类路径上以  | 
| create_executable | 布尔值;默认值为  java_single_jar。 | 
| deploy_env | 标签列表;默认值为  java_binary目标的列表。
在构建将由另一个java_binary加载的插件时,请设置此属性。设置此属性会从相应二进制文件的运行时 classpath(以及部署 jar)中排除此二进制文件与 deploy_env中指定的目标之间共享的所有依赖项。 | 
| deploy_manifest_lines | 字符串列表;默认值为  *_deploy.jar目标生成的META-INF/manifest.mf文件的代码行列表。此属性的内容不受“设为变量”替换的影响。 | 
| javacopts | 字符串列表;默认值为  这些编译器选项会在全局编译器选项之后传递给 javac。 | 
| jvm_flags | 字符串列表;默认值为  Java 二进制文件的封装容器脚本包含 CLASSPATH 定义(用于查找所有依赖的 jar)并调用正确的 Java 解释器。封装容器脚本生成的命令行包含主类的名称,后跟  请注意,此属性对  | 
| launcher | 标签;默认值为  bin/java程序。目标必须是cc_binary。实现 
Java 调用 API 的任何cc_binary都可以指定为此属性的值。默认情况下,Bazel 将使用正常的 JDK 启动器(bin/java 或 java.exe)。 相关的  请注意,您的原生 (C++、SWIG、JNI) 依赖项的构建方式会因您使用的是 JDK 启动器还是其他启动器而异: 
 使用除默认 JDK 启动器之外的任何启动器时, | 
| main_class | 字符串;默认值为  main()方法的类的名称,用作入口点。
如果规则使用此选项,则无需srcs=[...]列表。因此,借助此属性,您可以从已包含一个或多个main()方法的 Java 库创建可执行文件。
此属性的值是类名称,而不是源文件。该类必须在运行时可用:它可以由此规则(从  | 
| neverlink | 布尔值;默认值为  | 
| plugins | 标签列表;默认值为  java_plugin。库还可以从使用exported_plugins的依赖项继承插件。插件生成的资源将包含在此规则的最终 JAR 中。 | 
| resource_strip_prefix | 字符串;默认值为  
如果指定,则会从  | 
| runtime_deps | 标签列表;默认值为  deps类似,这些内容会出现在运行时类路径上,但与普通deps不同的是,它们不会出现在编译时类路径上。仅在运行时需要的依赖项应在此处列出。依赖项分析工具应忽略同时出现在runtime_deps和deps中的目标。 | 
| stamp | 整数;默认值为  
 除非已加戳记的二进制文件发生依赖项更改,否则不会重新构建。 | 
| use_launcher | 布尔值;默认值为  如果此属性设置为 false,则系统会忽略相应目标的 launcher 属性和相关的  | 
| use_testrunner | 布尔值;默认值为  com.google.testing.junit.runner.BazelTestRunner)类作为 Java 程序的主要入口点,并将测试类作为bazel.test_suite系统属性的值提供给测试运行程序。您可以使用此属性来替换默认行为,即对 java_test规则使用测试运行程序,而不对java_binary规则使用测试运行程序。您可能不会想这样做。一种用途是用于由另一条规则调用的AllTest规则(例如,在运行测试之前设置数据库)。AllTest规则必须声明为java_binary,但仍应使用测试运行程序作为其主要入口点。
可以使用main_class属性替换测试运行器类的名称。 | 
java_import
查看规则来源java_import(name, deps, data, add_exports, add_opens, 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, toolchains, visibility)
  此规则允许使用预编译的 .jar 文件作为 java_library 和 java_binary 规则的库。
示例
    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",
        ],
    )
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| deps | 标签列表;默认值为  | 
| data | 标签列表;默认值为  | 
| add_exports | 字符串列表;默认值为  module或package。这与 javac 和 JVM --add-exports= 标志相对应。 | 
| add_opens | 字符串列表;默认值为  module或package。这对应于 javac 和 JVM --add-opens= 标志。 | 
| constraints | 字符串列表;默认值为  | 
| exports | 标签列表;默认值为  | 
| jars | 标签列表;必需提供给依赖于此目标的 Java 目标的 JAR 文件列表。 | 
| neverlink | 布尔值;默认值为  tools.jar。 | 
| proguard_specs | 标签列表;默认值为  android_binary目标中。
此处包含的文件必须仅包含幂等规则,即 -dontnote、-dontwarn、assumenosideeffects 以及以 -keep 开头的规则。其他选项只能出现在android_binary的 proguard_specs 中,以确保非重言式合并。 | 
| runtime_deps | 标签列表;默认值为  | 
| srcjar | 标签;默认值为  | 
java_library
查看规则来源java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
此规则会将来源编译并链接到 .jar 文件中。
隐式输出
- libname.jar:包含类文件的 Java 归档。
- libname-src.jar:包含源代码(“源代码 JAR”)的归档文件。
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| deps | 标签列表;默认值为  deps的一般注释,请参阅大多数 build 规则定义的典型属性。
   
  相比之下, | 
| srcs | 标签列表;默认值为  
系统会编译  
类型为  
规则:如果规则(通常为  
类型为  只要存在至少一个上述文件类型的文件,系统就会忽略所有其他文件。否则会引发错误。 
此实参几乎总是必需的,除非您指定了  | 
| data | 标签列表;默认值为  data的一般注释,请参阅大多数 build 规则定义的典型属性。
  构建  | 
| resources | 标签列表;默认值为  资源可以是源文件,也可以是生成的文件。 
如果指定了资源,这些资源将与编译生成的常规  | 
| add_exports | 字符串列表;默认值为  module或package。这与 javac 和 JVM --add-exports= 标志相对应。 | 
| add_opens | 字符串列表;默认值为  module或package。这对应于 javac 和 JVM --add-opens= 标志。 | 
| bootclasspath | 标签;默认值为  | 
| exported_plugins | 标签列表;默认值为  java_plugin(例如注释处理器)列表。
  指定的  | 
| exports | 标签列表;默认值为  
  在此处列出规则将使这些规则可供父规则使用,就像父规则明确依赖于这些规则一样。对于常规(非导出) 总结:如果规则 X 可以访问 Y 中的代码。下面我们来看一些示例,以便更好地理解这一点。 
  假设 A 依赖于 B,而 B 依赖于 C。在这种情况下,C 是 A 的传递依赖项,因此更改 C 的来源并重新构建 A 将正确地重新构建所有内容。不过,A 将无法使用 C 中的类。为了实现这一点,A 必须在其  导出库的关闭适用于所有直接父级规则。再举一个略有不同的例子:A 依赖于 B,B 依赖于 C 和 D,并且还导出 C 但不导出 D。 现在,A 可以访问 C,但不能访问 D。现在,如果 C 和 D 分别导出了某些库(C' 和 D'),A 只能访问 C',而不能访问 D'。 
  重要提示:导出的规则不是常规依赖项。沿用上一个示例,如果 B 导出 C 并想使用 C,则还必须在自己的  | 
| javabuilder_jvm_flags | 字符串列表;默认值为  | 
| javacopts | 字符串列表;默认值为  这些编译器选项会在全局编译器选项之后传递给 javac。 | 
| neverlink | 布尔值;默认值为  tools.jar(适用于在标准 JDK 上运行的任何内容)。
  请注意, 如果运行时库与编译库不同,则必须确保运行时库仅在 JLS 禁止编译器内联的位置有所不同(并且必须适用于 JLS 的所有未来版本)。 | 
| plugins | 标签列表;默认值为  java_plugin。库还可以从使用exported_plugins的依赖项继承插件。插件生成的资源将包含在此规则的最终 JAR 中。 | 
| proguard_specs | 标签列表;默认值为  android_binary目标中。
此处包含的文件必须仅包含幂等规则,即 -dontnote、-dontwarn、assumenosideeffects 以及以 -keep 开头的规则。其他选项只能出现在android_binary的 proguard_specs 中,以确保非重言式合并。 | 
| resource_strip_prefix | 字符串;默认值为  
如果指定,则会从  | 
| runtime_deps | 标签列表;默认值为  deps类似,这些内容会出现在运行时类路径上,但与普通deps不同的是,它们不会出现在编译时类路径上。仅在运行时需要的依赖项应在此处列出。依赖项分析工具应忽略同时出现在runtime_deps和deps中的目标。 | 
java_test
查看规则来源java_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, 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, neverlink, plugins, 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)
java_test() 规则用于编译 Java 测试。测试是测试代码周围的二进制封装容器。系统会调用测试运行程序的主方法,而不是编译主类。
隐式输出目标
- name.jar:Java 归档。
- name_deploy.jar:适合部署的 Java 归档。(仅在明确请求时构建。)如需了解详情,请参阅 java_binary 的- name_deploy.jar输出的说明。
请参阅有关 java_binary() 实参的部分。此规则还支持所有测试规则 (*_test) 通用的所有属性。
示例
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",
    ],
)
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| deps | 标签列表;默认值为  deps的一般注释,请参阅大多数 build 规则定义的典型属性。 | 
| srcs | 标签列表;默认值为  
系统会编译  
类型为  
规则:如果规则(通常为  
此实参几乎总是必需的,除非  | 
| data | 标签列表;默认值为  data的一般注释。 | 
| resources | 标签列表;默认值为  资源可以是源文件,也可以是生成的文件。 
如果指定了资源,这些资源将与编译生成的常规  | 
| add_exports | 字符串列表;默认值为  module或package。这与 javac 和 JVM --add-exports= 标志相对应。 | 
| add_opens | 字符串列表;默认值为  module或package。这对应于 javac 和 JVM --add-opens= 标志。 | 
| bootclasspath | 标签;默认值为  | 
| classpath_resources | 标签列表;默认值为  
必须位于 Java 树根目录中的资源列表。此属性的唯一目的是支持第三方库,这些库要求其资源在类路径上以  | 
| create_executable | 布尔值;默认值为  java_single_jar。 | 
| deploy_manifest_lines | 字符串列表;默认值为  *_deploy.jar目标生成的META-INF/manifest.mf文件的代码行列表。此属性的内容不受“设为变量”替换的影响。 | 
| javacopts | 字符串列表;默认值为  这些编译器选项会在全局编译器选项之后传递给 javac。 | 
| jvm_flags | 字符串列表;默认值为  Java 二进制文件的封装容器脚本包含 CLASSPATH 定义(用于查找所有依赖的 jar)并调用正确的 Java 解释器。封装容器脚本生成的命令行包含主类的名称,后跟  请注意,此属性对  | 
| launcher | 标签;默认值为  bin/java程序。目标必须是cc_binary。实现 
Java 调用 API 的任何cc_binary都可以指定为此属性的值。默认情况下,Bazel 将使用正常的 JDK 启动器(bin/java 或 java.exe)。 相关的  请注意,您的原生 (C++、SWIG、JNI) 依赖项的构建方式会因您使用的是 JDK 启动器还是其他启动器而异: 
 使用除默认 JDK 启动器之外的任何启动器时, | 
| main_class | 字符串;默认值为  main()方法的类的名称,用作入口点。
如果规则使用此选项,则无需srcs=[...]列表。因此,借助此属性,您可以从已包含一个或多个main()方法的 Java 库创建可执行文件。
此属性的值是类名称,而不是源文件。该类必须在运行时可用:它可以由此规则(从  | 
| neverlink | 布尔值;默认值为  | 
| plugins | 标签列表;默认值为  java_plugin。库还可以从使用exported_plugins的依赖项继承插件。插件生成的资源将包含在此规则的最终 JAR 中。 | 
| resource_strip_prefix | 字符串;默认值为  
如果指定,则会从  | 
| runtime_deps | 标签列表;默认值为  deps类似,这些内容会出现在运行时类路径上,但与普通deps不同的是,它们不会出现在编译时类路径上。仅在运行时需要的依赖项应在此处列出。依赖项分析工具应忽略同时出现在runtime_deps和deps中的目标。 | 
| stamp | 整数;默认值为  
 除非已加戳记的二进制文件发生依赖项更改,否则不会重新构建。 | 
| test_class | 字符串;默认值为  
  默认情况下,如果未定义此实参,则使用旧版模式,并改用测试实参。设置  
  此属性用于指定要由此测试运行的 Java 类的名称。很少需要设置此属性。如果省略此实参,系统将使用目标的  
  对于 JUnit3,测试类需要是  
  此属性允许多个  | 
| use_launcher | 布尔值;默认值为  如果此属性设置为 false,则系统会忽略相应目标的 launcher 属性和相关的  | 
| use_testrunner | 布尔值;默认值为  com.google.testing.junit.runner.BazelTestRunner)类作为 Java 程序的主要入口点,并将测试类作为bazel.test_suite系统属性的值提供给测试运行程序。您可以使用此属性来替换默认行为,即对 java_test规则使用测试运行程序,而不对java_binary规则使用测试运行程序。您可能不会想这样做。一种用途是用于由另一条规则调用的AllTest规则(例如,在运行测试之前设置数据库)。AllTest规则必须声明为java_binary,但仍应使用测试运行程序作为其主要入口点。
可以使用main_class属性替换测试运行器类的名称。 | 
java_package_configuration
查看规则来源java_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, system, tags, target_compatible_with, testonly, toolchains, visibility)
要应用于一组软件包的配置。
可以将配置添加到 java_toolchain.javacopts 中。
示例:
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",
    ]
)
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| data | 标签列表;默认值为  | 
| javacopts | 字符串列表;默认值为  | 
| output_licenses | 字符串列表;默认值为  | 
| packages | 标签列表;默认值为  package_group集。 | 
| system | 标签;默认值为  | 
java_plugin
查看规则来源java_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
  java_plugin 定义了由 Bazel 运行的 Java 编译器的插件。唯一受支持的插件类型是注解处理器。java_library 或 java_binary 规则可以通过 plugins 属性依赖于插件来运行插件。java_library 还可以使用 exported_plugins 将插件自动导出到直接依赖于它的库。
隐式输出目标
- libname.jar:Java 归档。
  参数与 java_library 相同,只是添加了 processor_class 参数。
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| deps | 标签列表;默认值为  deps的一般注释,请参阅大多数 build 规则定义的典型属性。
   
  相比之下, | 
| srcs | 标签列表;默认值为  
系统会编译  
类型为  
规则:如果规则(通常为  
类型为  只要存在至少一个上述文件类型的文件,系统就会忽略所有其他文件。否则会引发错误。 
此实参几乎总是必需的,除非您指定了  | 
| data | 标签列表;默认值为  data的一般注释,请参阅大多数 build 规则定义的典型属性。
  构建  | 
| resources | 标签列表;默认值为  资源可以是源文件,也可以是生成的文件。 
如果指定了资源,这些资源将与编译生成的常规  | 
| add_exports | 字符串列表;默认值为  module或package。这与 javac 和 JVM --add-exports= 标志相对应。 | 
| add_opens | 字符串列表;默认值为  module或package。这对应于 javac 和 JVM --add-opens= 标志。 | 
| bootclasspath | 标签;默认值为  | 
| generates_api | 布尔值;默认值为  如果某条规则使用 API 生成注释处理器,则依赖于该规则的其他规则只有在编译操作安排在生成规则之后时,才能引用生成的代码。此属性指示 Bazel 在启用 --java_header_compilation 时引入调度限制。 警告:此属性会影响 build 性能,请仅在必要时使用。 | 
| javabuilder_jvm_flags | 字符串列表;默认值为  | 
| javacopts | 字符串列表;默认值为  这些编译器选项会在全局编译器选项之后传递给 javac。 | 
| neverlink | 布尔值;默认值为  tools.jar(适用于在标准 JDK 上运行的任何内容)。
  请注意, 如果运行时库与编译库不同,则必须确保运行时库仅在 JLS 禁止编译器内联的位置有所不同(并且必须适用于 JLS 的所有未来版本)。 | 
| output_licenses | 字符串列表;默认值为  | 
| plugins | 标签列表;默认值为  java_plugin。库还可以从使用exported_plugins的依赖项继承插件。插件生成的资源将包含在此规则的最终 JAR 中。 | 
| processor_class | 字符串;默认值为  | 
| proguard_specs | 标签列表;默认值为  android_binary目标中。
此处包含的文件必须仅包含幂等规则,即 -dontnote、-dontwarn、assumenosideeffects 以及以 -keep 开头的规则。其他选项只能出现在android_binary的 proguard_specs 中,以确保非重言式合并。 | 
| resource_strip_prefix | 字符串;默认值为  
如果指定,则会从  | 
java_runtime
查看规则来源java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)
指定 Java 运行时的配置。
示例:
java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| srcs | 标签列表;默认值为  | 
| default_cds | 标签;默认值为  java_runtime的默认 CDS 归档。为java_binary目标启用 hermetic 后,默认 CDSjava_runtime会打包到 hermetic 部署 JAR 中。 | 
| hermetic_srcs | 标签列表;默认值为  | 
| hermetic_static_libs | 标签列表;默认值为  | 
| java | 标签;默认值为  | 
| java_home | 字符串;默认值为  srcs和java属性必须为空。 | 
| lib_ct_sym | 标签;默认值为  --release进行编译所需的 lib/ct.sym 文件。如果未指定,并且srcs中只有一个路径以/lib/ct.sym结尾的文件,则使用该文件。 | 
| lib_modules | 标签;默认值为  | 
| output_licenses | 字符串列表;默认值为  | 
| version | 整数;默认值为  Runtime.version().feature()返回的整数。 | 
java_toolchain
查看规则来源java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, distribs, exec_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
指定 Java 编译器的配置。可以通过 --java_toolchain 实参更改要使用的工具链。通常情况下,您不应编写此类规则,除非您想调整 Java 编译器。
示例
一个简单的示例:
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",
)
参数
| 属性 | |
|---|---|
| name | 名称;必需 相应目标的唯一名称。 | 
| android_lint_data | 标签列表;默认值为  | 
| android_lint_jvm_opts | 字符串列表;默认值为  | 
| android_lint_opts | 字符串列表;默认值为  | 
| android_lint_package_configuration | 标签列表;默认值为  | 
| android_lint_runner | 标签;默认值为  | 
| bootclasspath | 标签列表;默认值为  | 
| compatible_javacopts | null;默认值为  | 
| deps_checker | 标签;默认值为  | 
| forcibly_disable_header_compilation | 布尔值;默认值为  | 
| genclass | 标签;默认值为  | 
| header_compiler | 标签;默认值为  | 
| header_compiler_builtin_processors | 字符串列表;默认值为  | 
| header_compiler_direct | 标签;默认值为  此工具不支持注释处理。 | 
| ijar | 标签;默认值为  | 
| jacocorunner | 标签;默认值为  | 
| java_runtime | 标签;默认值为  | 
| javabuilder | 标签;默认值为  | 
| javabuilder_data | 标签列表;默认值为  | 
| javabuilder_jvm_opts | 字符串列表;默认值为  | 
| javac_supports_multiplex_workers | 布尔值;默认值为  | 
| javac_supports_worker_cancellation | 布尔值;默认值为  | 
| javac_supports_worker_multiplex_sandboxing | 布尔值;默认值为  | 
| javac_supports_workers | 布尔值;默认值为  | 
| javacopts | 字符串列表;默认值为  | 
| jspecify_implicit_deps | 标签;默认值为  | 
| jspecify_javacopts | 字符串列表;默认值为  | 
| jspecify_packages | 标签列表;默认值为  | 
| jspecify_processor | 标签;默认值为  | 
| jspecify_processor_class | 字符串;默认值为  | 
| jspecify_stubs | 标签列表;默认值为  | 
| jvm_opts | 字符串列表;默认值为  | 
| misc | 字符串列表;默认值为  | 
| oneversion | 标签;默认值为  | 
| oneversion_allowlist | 标签;默认值为  | 
| oneversion_allowlist_for_tests | 标签;默认值为  | 
| oneversion_whitelist | 标签;默认值为  | 
| package_configuration | 标签列表;默认值为  | 
| proguard_allowlister | 标签;默认值为  | 
| reduced_classpath_incompatible_processors | 字符串列表;默认值为  | 
| singlejar | 标签;默认值为  | 
| source_version | 字符串;默认值为  | 
| target_version | 字符串;默认值为  | 
| timezone_data | 标签;默认值为  | 
| tools | 标签列表;默认值为  | 
| turbine_data | 标签列表;默认值为  | 
| turbine_jvm_opts | 字符串列表;默认值为  | 
| xlint | 字符串列表;默认值为  |