規則
- 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
查看規則來源java_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)
  建構 Java 封存檔 (「jar 檔案」),以及與規則同名的包裝函式殼層指令碼。
  包裝函式殼層指令碼使用的類別路徑包含二進位檔所依附的每個程式庫的 JAR 檔案。執行包裝函式殼層指令碼時,任何非空白的 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:包含來源的封存檔 (「source jar」)。
- name_deploy.jar:適合部署的 Java 封存檔 (僅在明確要求時建構)。- 為規則建構 - <name>_deploy.jar目標會建立含有資訊清單的獨立 JAR 檔案,可透過- java -jar指令或包裝函式指令碼的- --singlejar選項執行。建議使用包裝函式指令碼,而非- java -jar,因為包裝函式指令碼也會將 JVM 旗標和選項傳遞至要載入的原生程式庫。- 部署 JAR 包含類別載入器找到的所有類別,該載入器會從頭到尾搜尋二進位的包裝函式指令碼路徑。此外,其中也包含依附元件所需的原生程式庫。這些檔案會在執行階段自動載入到 JVM 中。 - 如果目標指定 launcher 屬性,_deploy.jar 就會是原生二進位檔,而非一般 JAR 檔案。這會包含啟動器,以及規則的所有原生 (C++) 依附元件,全部連結至靜態二進位檔。實際的 JAR 檔案位元組會附加至該原生二進位檔,建立包含可執行檔和 Java 程式碼的單一二進位檔 Blob。您可以直接執行產生的 JAR 檔案,就像執行任何原生二進位檔一樣。 
- name_deploy-src.jar:封存檔,內含從目標的遞移閉包收集的來源。這些類別會與- deploy.jar中的類別相符,但如果 JAR 沒有相符的來源 JAR,則不在此限。
  在沒有 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 | 名稱:必填 這個目標的專屬名稱。 建議使用應用程式主要進入點的來源檔案名稱 (不含副檔名)。舉例來說,如果您的進入點名為 Main.java,則名稱可以是Main。 | 
| deps | 標籤清單;預設值為  deps的一般註解,瞭解大多數建構規則定義的典型屬性。 | 
| srcs | 標籤清單;預設值為  
            編譯  
            系統會解壓縮並編譯  
            規則:如果規則 (通常是  
            除非  | 
| resources | 標籤清單;預設值為  
            如果指定資源,這些資源會與編譯產生的檔案一起封裝在 JAR 中。 資源可以是來源檔案或產生的檔案。 | 
| 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檔案的行清單。這個屬性的內容不會受到「建立變數」替代作業影響。 | 
| javacopts | 字串清單;預設值為  這些編譯器選項會在全域編譯器選項之後傳遞至 javac。 | 
| jvm_flags | 字串清單;預設值為  Java 二進位檔的包裝函式指令碼包含 CLASSPATH 定義 (可找出所有依附 JAR),並叫用正確的 Java 解譯器。包裝函式指令碼產生的指令列包含主要類別的名稱,後方加上  請注意,這個屬性不會影響  | 
| launcher | 標籤;預設值為  bin/java程式。目標必須是cc_binary。實作 
          Java Invocation API 的任何cc_binary都可以指定為這個屬性的值。根據預設,Bazel 會使用正常的 JDK 啟動器 (bin/java 或 java.exe)。 相關的  請注意,視您使用的是 JDK 啟動器或其他啟動器而定,系統會以不同方式建構原生 (C++、SWIG、JNI) 依附元件: 
 使用預設 JDK 啟動器以外的任何啟動器時, | 
| main_class | 字串;預設值為  main()方法所屬類別名稱。
          如果規則使用這個選項,就不需要srcs=[...]清單。
          因此,只要使用這個屬性,就能從已包含一或多個main()方法的 Java 程式庫建立可執行檔。
            這項屬性的值是類別名稱,而非來源檔案。類別必須在執行階段提供:可由這項規則 (從  | 
| plugins | 標籤清單;預設值為  java_plugin。程式庫也可能從使用exported_plugins的依附元件繼承外掛程式。外掛程式產生的資源會納入這項規則產生的 JAR 中。 | 
| resource_jars | 標籤清單;預設值為  | 
| 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, 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)
  這項規則允許使用預先編譯的 .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 | 標籤清單;預設值為  | 
| 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, 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)
這項規則會將來源編譯並連結至 .jar 檔案。
隱含輸出目標
- libname.jar:包含類別檔案的 Java 封存檔。
- libname-src.jar:包含來源的封存檔 (「source jar」)。
引數
| 屬性 | |
|---|---|
| name | 名稱:必填 這個目標的專屬名稱。 | 
| deps | 標籤清單;預設值為  deps」的「大多數建構規則定義的典型屬性」。
           
          相較之下, | 
| srcs | 標籤清單;預設值為  
            編譯  
            系統會解壓縮並編譯  
            規則:如果規則 (通常是  
            除非  | 
| data | 標籤清單;預設值為  data」的「大多數建構規則定義的典型屬性」。
          建構  | 
| resources | 標籤清單;預設值為  
            如果指定資源,這些資源會與編譯產生的檔案一起封裝在 JAR 中。 資源可以是來源檔案或產生的檔案。 | 
| 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,也必須在自己的  | 
| javacopts | 字串清單;預設值為  這些編譯器選項會在全域編譯器選項之後傳遞至 javac。 | 
| neverlink | 布林值;預設值為  tools.jar。
          請注意,根據 Java 語言規格 (例如  如果執行階段程式庫與編譯程式庫不同,您必須確保只有在 JLS 禁止編譯器內嵌的位置不同 (且必須適用於所有未來版本的 JLS)。 | 
| plugins | 標籤清單;預設值為  java_plugin。程式庫也可能從使用exported_plugins的依附元件繼承外掛程式。外掛程式產生的資源會納入這項規則產生的 JAR 中。 | 
| proguard_specs | 標籤清單;預設值為  android_binary目標。這裡包含的檔案只能有等冪規則,也就是 -dontnote、-dontwarn、assumenosideeffects,以及以 -keep 開頭的規則。其他選項只能顯示在android_binary的 proguard_specs 中,確保合併作業不會出現同義反覆的情況。 | 
| resource_jars | 標籤清單;預設值為  | 
| resource_strip_prefix | 字串;預設值為  
            如有指定,系統會從  | 
| runtime_deps | 標籤清單;預設值為  deps類似,這些項目會出現在執行階段類別路徑中,但與一般deps不同,這些項目不會出現在編譯階段類別路徑中。這裡應列出僅在執行階段需要的依附元件。出現在runtime_deps和deps中的目標應由依附元件分析工具忽略。 | 
java_lite_proto_library
查看規則來源java_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 會從 .proto 檔案生成 Java 程式碼。
deps 必須指向 proto_library
 規則。
範例:
java_library(
    name = "lib",
    deps = [":foo"],
)
java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)
proto_library(
    name = "bar",
)
引數
| 屬性 | |
|---|---|
| name | 名稱:必填 這個目標的專屬名稱。 | 
| deps | 標籤清單;預設值為  proto_library。 | 
java_proto_library
查看規則來源java_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 會從 .proto 檔案生成 Java 程式碼。
deps 必須指向 proto_library
 規則。
範例:
java_library(
    name = "lib",
    deps = [":foo_java_proto"],
)
java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)
proto_library(
    name = "foo_proto",
)
引數
| 屬性 | |
|---|---|
| name | 名稱:必填 這個目標的專屬名稱。 | 
| deps | 標籤清單;預設值為  proto_library。 | 
java_test
查看規則來源java_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)
java_test() 規則會編譯 Java 測試。測試是測試程式碼周圍的二進位封裝函式。系統會叫用測試執行器的主要方法,而非編譯主要類別。
隱含輸出目標
- name.jar:Java 封存檔。
- name_deploy.jar:適合部署的 Java 封存檔。(只有在明確要求時才會建構)。詳情請參閱- name_deploy.jar輸出內容的說明。java_binary
請參閱 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的一般註解,瞭解大多數建構規則定義的典型屬性。 | 
| srcs | 標籤清單;預設值為  
            編譯  
            系統會解壓縮並編譯  
            規則:如果規則 (通常是  
            除非  | 
| resources | 標籤清單;預設值為  
            如果指定資源,這些資源會與編譯產生的檔案一起封裝在 JAR 中。 資源可以是來源檔案或產生的檔案。 | 
| 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 Invocation API 的任何cc_binary都可以指定為這個屬性的值。根據預設,Bazel 會使用正常的 JDK 啟動器 (bin/java 或 java.exe)。 相關的  請注意,視您使用的是 JDK 啟動器或其他啟動器而定,系統會以不同方式建構原生 (C++、SWIG、JNI) 依附元件: 
 使用預設 JDK 啟動器以外的任何啟動器時, | 
| main_class | 字串;預設值為  main()方法所屬類別名稱。
          如果規則使用這個選項,就不需要srcs=[...]清單。
          因此,只要使用這個屬性,就能從已包含一或多個main()方法的 Java 程式庫建立可執行檔。
            這項屬性的值是類別名稱,而非來源檔案。類別必須在執行階段提供:可由這項規則 (從  | 
| plugins | 標籤清單;預設值為  java_plugin。程式庫也可能從使用exported_plugins的依附元件繼承外掛程式。外掛程式產生的資源會納入這項規則產生的 JAR 中。 | 
| resource_jars | 標籤清單;預設值為  | 
| 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, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, 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 | 字串清單;預設值為  | 
| packages | 標籤清單;預設值為  package_group集。 | 
java_plugin
查看規則來源java_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 會定義 Bazel 執行的 Java 編譯器外掛程式。目前僅支援註解處理器這類外掛程式。java_library 或 java_binary 規則可以透過 plugins 屬性,依附外掛程式執行。java_library 也可以使用 exported_plugins,將外掛程式自動匯出至直接依附於該外掛程式的程式庫。
隱含輸出目標
- libname.jar:Java 封存檔。
  引數與 java_library 相同,但新增了 processor_class 引數。
引數
| 屬性 | |
|---|---|
| name | 名稱:必填 這個目標的專屬名稱。 | 
| deps | 標籤清單;預設值為  deps」的「大多數建構規則定義的典型屬性」。
           
          相較之下, | 
| srcs | 標籤清單;預設值為  
            編譯  
            系統會解壓縮並編譯  
            規則:如果規則 (通常是  
            除非  | 
| data | 標籤清單;預設值為  data」的「大多數建構規則定義的典型屬性」。
          建構  | 
| resources | 標籤清單;預設值為  
            如果指定資源,這些資源會與編譯產生的檔案一起封裝在 JAR 中。 資源可以是來源檔案或產生的檔案。 | 
| generates_api | 布林值;預設值為  如果規則使用 API 產生註解處理器,則其他依附於該規則的規則只能參照產生的程式碼,前提是這些規則的編譯動作排定在產生規則之後。啟用 --java_header_compilation 時,這項屬性會指示 Bazel 導入排程限制。 警告:這項屬性會影響建構效能,請僅在必要時使用。 | 
| javacopts | 字串清單;預設值為  這些編譯器選項會在全域編譯器選項之後傳遞至 javac。 | 
| neverlink | 布林值;預設值為  tools.jar。
          請注意,根據 Java 語言規格 (例如  如果執行階段程式庫與編譯程式庫不同,您必須確保只有在 JLS 禁止編譯器內嵌的位置不同 (且必須適用於所有未來版本的 JLS)。 | 
| output_licenses | 授權類型;預設為  common attributes
         | 
| plugins | 標籤清單;預設值為  java_plugin。程式庫也可能從使用exported_plugins的依附元件繼承外掛程式。外掛程式產生的資源會納入這項規則產生的 JAR 中。 | 
| processor_class | 字串;預設值為  | 
| proguard_specs | 標籤清單;預設值為  android_binary目標。這裡包含的檔案只能有等冪規則,也就是 -dontnote、-dontwarn、assumenosideeffects,以及以 -keep 開頭的規則。其他選項只能顯示在android_binary的 proguard_specs 中,確保合併作業不會出現同義反覆的情況。 | 
| resource_jars | 標籤清單;預設值為  | 
| resource_strip_prefix | 字串;預設值為  
            如有指定,系統會從  | 
java_runtime
查看規則來源java_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)
指定 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目標啟用密封功能,且目標未指定classlist屬性來提供自己的 CDS 封存檔,則java_runtime預設 CDS 會封裝在密封部署 JAR 中。 | 
| hermetic_srcs | 標籤清單;預設值為  | 
| java | 標籤;預設值為  | 
| java_home | 字串;預設值為  srcs和java屬性必須留空。 | 
| lib_ct_sym | 標籤;預設值為  --release編譯時所需的 lib/ct.sym 檔案。如果未指定,且srcs中只有一個路徑結尾為/lib/ct.sym的檔案,系統就會使用該檔案。 | 
| lib_modules | 標籤;預設值為  | 
| 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_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)
指定 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 | 標籤清單;預設值為  | 
| deps_checker | 標籤清單;預設值為  | 
| forcibly_disable_header_compilation | 布林值;預設值為  | 
| genclass | 標籤清單 (必要)GenClass 部署 JAR 的標籤。 | 
| header_compiler | 標籤清單;預設值為  | 
| header_compiler_direct | 標籤清單;預設值為  這項工具不支援註解處理。 | 
| ijar | 標籤清單 (必要)ijar 可執行檔的標籤。 | 
| jacocorunner | 標籤;預設值為  | 
| java_runtime | 標籤 (必填)這個工具鍊要使用的 java_runtime。執行設定中的預設值為 java_runtime。 | 
| javabuilder | 標籤清單 (必要)JavaBuilder 部署 JAR 的標籤。 | 
| javabuilder_data | 標籤清單;預設值為  | 
| javabuilder_jvm_opts | 字串清單;預設值為  | 
| javac_supports_multiplex_workers | 布林值;預設值為  | 
| javac_supports_worker_multiplex_sandboxing | 布林值;預設值為  | 
| javac_supports_workers | 布林值;預設值為  | 
| javacopts | 字串清單;預設值為  | 
| jvm_opts | 字串清單;預設值為  | 
| oneversion | 標籤;預設值為  | 
| oneversion_allowlist_for_tests | 標籤;預設值為  | 
| oneversion_whitelist | 標籤;預設值為  | 
| package_configuration | 標籤清單;預設值為  | 
| proguard_allowlister | 標籤;預設值為  | 
| resourcejar | 標籤清單;預設值為  | 
| singlejar | 標籤清單 (必要)SingleJar 部署 JAR 的標籤。 | 
| source_version | 字串;預設值為  | 
| target_version | 字串;預設值為  | 
| timezone_data | 標籤;預設值為  | 
| tools | 標籤清單;預設值為  | 
| turbine_data | 標籤清單;預設值為  | 
| turbine_jvm_opts | 字串清單;預設值為  | 
| xlint | 字串清單;預設值為  |