規則
- 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 指令碼,其名稱與規則相同。包裝函式殼層指令碼會使用 classpath,其中包含每個二進位檔依附的程式庫的 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 檔案包含所有類別,這些類別會由類別載入器找到,而該類別載入器會從頭到尾搜尋二進位檔的包裝函式指令碼中的 classpath。也包含依附元件所需的原生程式庫。這些類別會在執行階段自動載入至 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 的一般註解,請參閱「大部分建構規則定義的常見屬性」。 |
srcs
|
標籤清單;預設為
系統會編譯類型為
系統會解壓縮並編譯
規則:如果規則 (通常為
這個引數幾乎一律都是必要的,除非 |
data
|
標籤清單;預設為 data 的一般註解,請參閱「大多數建構規則定義的常見屬性」。
|
resources
|
標籤清單;預設為 資源可以是來源檔案或產生的檔案。
如果指定資源,系統會將這些資源與編譯產生的一般 |
add_exports
|
字串清單;預設為 module 或 package 。這與 javac 和 JVM --add-exports= 標記相對應。 |
add_opens
|
字串清單;預設為 module 或 package 。這會對應至 javac 和 JVM --add-opens= 標記。 |
bootclasspath
|
標籤;預設為 |
classpath_resources
|
標籤清單;預設為
必須位於 Java 樹狀結構根目錄的資源清單。這個屬性唯一的用途是支援第三方程式庫,這些程式庫要求其資源必須在 classpath 中以 |
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 叫用 API 的 cc_binary 都可以指定為這項屬性的值。根據預設,Bazel 會使用一般 JDK 啟動器 (bin/java 或 java.exe)。 相關的 請注意,視您使用的是 JDK 啟動器或其他啟動器而定,原生 (C++、SWIG、JNI) 依附元件會以不同的方式建構:
使用預設 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
:包含來源檔案的封存檔案 (「source jar」)。
引數
屬性 | |
---|---|
name |
名稱;必填 這個目標的專屬名稱。 |
deps
|
標籤清單;預設為 deps 的一般說明,請參閱「大部分建構規則定義的常見屬性」。
由
相反地, |
srcs
|
標籤清單;預設為
系統會編譯類型為
系統會解壓縮並編譯
規則:如果規則 (通常為
系統會將類型為 只要有上述檔案類型的檔案,系統就會忽略所有其他檔案。否則會擲回錯誤。
除非您指定 |
data
|
標籤清單;預設為 data 的一般說明,請參閱「大部分建構規則定義的常見屬性」。
建構 |
resources
|
標籤清單;預設為 資源可以是來源檔案或產生的檔案。
如果指定資源,系統會將這些資源與編譯產生的一般 |
add_exports
|
字串清單;預設為 module 或 package 。這與 javac 和 JVM --add-exports= 標記相對應。 |
add_opens
|
字串清單;預設為 module 或 package 。這會對應至 javac 和 JVM --add-opens= 標記。 |
bootclasspath
|
標籤;預設為 |
exported_plugins
|
標籤清單;預設為 java_plugin 清單 (例如註解處理器)。
指定的 |
exports
|
標籤清單;預設為
將規則列在此處,即可讓父項規則使用這些規則,就像父項明確依附這些規則一樣。但對於一般 (未匯出的)
摘要:如果兩者之間存在以
假設 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 一樣,這些會顯示在執行階段類別路徑中,但與一般 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 的一般註解,請參閱「大部分建構規則定義的常見屬性」。 |
srcs
|
標籤清單;預設為
系統會編譯類型為
系統會解壓縮並編譯
規則:如果規則 (通常為
這個引數幾乎一律都是必要的,除非 |
data
|
標籤清單;預設為 data 的一般註解,請參閱「大多數建構規則定義的常見屬性」。
|
resources
|
標籤清單;預設為 資源可以是來源檔案或產生的檔案。
如果指定資源,系統會將這些資源與編譯產生的一般 |
add_exports
|
字串清單;預設為 module 或 package 。這與 javac 和 JVM --add-exports= 標記相對應。 |
add_opens
|
字串清單;預設為 module 或 package 。這會對應至 javac 和 JVM --add-opens= 標記。 |
bootclasspath
|
標籤;預設為 |
classpath_resources
|
標籤清單;預設為
必須位於 Java 樹狀結構根目錄的資源清單。這個屬性唯一的用途是支援第三方程式庫,這些程式庫要求其資源必須在 classpath 中以 |
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 叫用 API 的 cc_binary 都可以指定為這項屬性的值。根據預設,Bazel 會使用一般 JDK 啟動器 (bin/java 或 java.exe)。 相關的 請注意,視您使用的是 JDK 啟動器或其他啟動器而定,原生 (C++、SWIG、JNI) 依附元件會以不同的方式建構:
使用預設 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 的一般說明,請參閱「大部分建構規則定義的常見屬性」。
由
相反地, |
srcs
|
標籤清單;預設為
系統會編譯類型為
系統會解壓縮並編譯
規則:如果規則 (通常為
系統會將類型為 只要有上述檔案類型的檔案,系統就會忽略所有其他檔案。否則會擲回錯誤。
除非您指定 |
data
|
標籤清單;預設為 data 的一般說明,請參閱「大部分建構規則定義的常見屬性」。
建構 |
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 時引入排程限制。 警告:這個屬性會影響建構效能,請僅在必要時使用。 |
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
|
字串清單;預設為 |