规则
- 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 脚本使用 classpath,其中包括二进制文件依赖的每个库的 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 的一般说明,请参阅大多数 build 规则定义的典型属性。
|
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 加载的插件时,请设置此属性。设置此属性会从此二进制文件的运行时类路径(以及部署 jar 文件)中排除此二进制文件与 deploy_env 中指定的目标之间共享的所有依赖项。
|
deploy_manifest_lines
|
字符串列表;默认值为 *_deploy.jar 目标生成的 META-INF/manifest.mf 文件中的代码行列表。此属性的内容不受“Make 变量”替换的影响。
|
javacopts
|
字符串列表;默认值为 这些编译器选项会在全局编译器选项之后传递给 javac。 |
jvm_flags
|
字符串列表;默认值为 Java 二进制文件的封装容器脚本包含 CLASSPATH 定义(用于查找所有依赖项 jar),并调用正确的 Java 解释器。封装容器脚本生成的命令行包含主类名称后跟 请注意,此属性对 |
launcher
|
标签;默认值为 bin/java 程序。目标必须是 cc_binary 。实现
Java Invocation 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 一样,这些类也会显示在运行时类路径中,但与它们不同的是,不会显示在编译时类路径中。仅在运行时需要的依赖项应在此处列出。依赖项分析工具应忽略同时出现在 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 。
请注意, 如果运行时库与编译库不同,则您必须确保它只在 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 一样,这些类也会显示在运行时类路径中,但与它们不同的是,不会显示在编译时类路径中。仅在运行时需要的依赖项应在此处列出。依赖项分析工具应忽略同时出现在 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 的一般说明,请参阅大多数 build 规则定义的典型属性。
|
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 文件中的代码行列表。此属性的内容不受“Make 变量”替换的影响。
|
javacopts
|
字符串列表;默认值为 这些编译器选项会在全局编译器选项之后传递给 javac。 |
jvm_flags
|
字符串列表;默认值为 Java 二进制文件的封装容器脚本包含 CLASSPATH 定义(用于查找所有依赖项 jar),并调用正确的 Java 解释器。封装容器脚本生成的命令行包含主类名称后跟 请注意,此属性对 |
launcher
|
标签;默认值为 bin/java 程序。目标必须是 cc_binary 。实现
Java Invocation 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 一样,这些类也会显示在运行时类路径中,但与它们不同的是,不会显示在编译时类路径中。仅在运行时需要的依赖项应在此处列出。依赖项分析工具应忽略同时出现在 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 。
请注意, 如果运行时库与编译库不同,则您必须确保它只在 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 目标启用密封后,java_runtime 默认 CDS 会打包在密封部署 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
|
字符串列表;默认值为 |