規則
- 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 檔案即為 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
:包含來源 (「來源 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
|
標籤清單;預設為
如果已指定資源,這些資源會與編譯產生的一般 資源可以是來源檔案或產生的檔案。 |
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 叫用 API 的 cc_binary ,都可以指定為這項屬性的值。根據預設,Bazel 會使用一般 JDK 啟動器 (bin/java 或 java.exe)。 相關的 請注意,您的原生 (C++、SWIG、JNI) 依附元件的建構方式取決於您使用的是 JDK 啟動器或其他啟動器:
使用預設 JDK 啟動器以外的任何啟動器時, |
main_class
|
字串;預設值為 main() 方法的類別名稱,做為進入點。如果規則使用這個選項,就不需要使用 srcs=[...] 清單。
因此,您可以利用這項屬性,透過已包含一或多個 main() 方法的 Java 程式庫執行可執行檔。
此屬性的值是類別名稱,而非來源檔案。該類別必須在執行階段可用:由這項規則 (透過 |
plugins
|
標籤清單;預設為 java_plugin 都會在每次建立這項規則時執行。程式庫也可能從使用 exported_plugins 的依附元件繼承外掛程式。外掛程式產生的資源會納入這項規則產生的 jar 檔案內。 |
resource_jars
|
標籤清單;預設為 |
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、假設性影響,以及開頭為 -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 的一般註解,請參閱「多數建構規則所定義的一般屬性」。
相反地, |
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
|
標籤清單;預設為
這裡的產品資訊規則就能提供給父項規則,就像父項必須明確依附這些規則一樣。這不適用於一般 (未匯出)
摘要:如果「X」X規則之間存在依附元件路徑,且該路徑的開頭為
假設 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 版本的 JLS)。 |
plugins
|
標籤清單;預設為 java_plugin 都會在每次建立這項規則時執行。程式庫也可能從使用 exported_plugins 的依附元件繼承外掛程式。由外掛程式產生的資源會包含在這項規則產生的 jar 中。 |
proguard_specs
|
標籤清單;預設為 android_binary 目標。此處納入的檔案只能使用冪等規則,即 -dontnote、-dontwarn、假設性影響,以及開頭為 -keep 的規則。其他選項只能在 android_binary 的 proguard_specs 中顯示,以確保不會自動合併。 |
resource_strip_prefix
|
字串;預設值為
如有指定,系統會從 |
runtime_deps
|
標籤清單;預設為 deps 一樣,這些項目會出現在執行階段類別路徑上,但與編譯時間類別路徑不同,而非編譯時間類別路徑。這裡應列出僅在執行階段需要的依附元件。依附元件分析工具應忽略 runtime_deps 和 deps 中出現的目標。 |
java_lite_proto_library
查看規則來源java_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_lite_proto_library
會從 .proto
檔案產生 Java 程式碼。
deps
必須指向 proto_library
規則。
範例:
java_library(
name = "lib",
runtime_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, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_proto_library
會從 .proto
檔案產生 Java 程式碼。
deps
必須指向 proto_library
規則。
範例:
java_library(
name = "lib",
runtime_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, 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 樹狀結構的根目錄中的資源清單。這個屬性的唯一用途是支援第三方程式庫,這些程式庫的資源必須和 |
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, 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 。 |
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 封存檔案。
除了加入 processor_class
引數外,引數與 java_library
相同。
引數
屬性 | |
---|---|
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_compile 時導入排程限制。 警告:這項屬性會影響建構效能,請只在必要時使用。 |
javabuilder_jvm_flags
|
字串清單;預設為 |
javacopts
|
字串清單;預設為 這些編譯器選項會在全域編譯器選項之後傳遞至 javac。 |
neverlink
|
布林值;預設值為 tools.jar 。
請注意, 如果執行階段程式庫與編譯程式庫不同,您必須確保該程式庫僅與 JLS 禁止編譯器進行內嵌時的差異 (且必須保留日後所有 JLS 版本的 JLS)。 |
output_licenses
|
字串清單;預設為 |
plugins
|
標籤清單;預設為 java_plugin 都會在每次建立這項規則時執行。程式庫也可能從使用 exported_plugins 的依附元件繼承外掛程式。由外掛程式產生的資源會包含在這項規則產生的 jar 中。 |
processor_class
|
字串;預設值為 |
proguard_specs
|
標籤清單;預設為 android_binary 目標。此處納入的檔案只能使用冪等規則,即 -dontnote、-dontwarn、假設性影響,以及開頭為 -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 目標已啟用密封設計,且目標並未透過指定 classlist 屬性提供自己的 CDS 封存內容,則 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_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; default is |
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_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
|
字串清單;預設為 |