Java 資訊

一個提供者,可封裝 Java 和類似 Java 目標的相關資訊。

成員

JavaInfo

JavaInfo JavaInfo(output_jar, compile_jar, source_jar=None, compile_jdeps=None, generated_class_jar=None, generated_source_jar=None, native_headers_jar=None, manifest_proto=None, neverlink=False, deps=[], runtime_deps=[], exports=[], exported_plugins=[], jdeps=None, native_libraries=[])

JavaInfo 建構函式。

參數

參數 說明
output_jar 必要
因編譯而建立的 Jar (例如 javac、scalac 等)。
compile_jar File; or None; 必要
新增為編譯時間依附元件的 Jar 檔,而非 output_jar。這通常是 run_ijar 產生的 ijar。如果無法使用 ijar,請考慮改用 stamp_ijar 的輸出內容。如果您不想使用這兩者,只要傳遞 output_jar 即可。將這個參數設為 None 時,有幾個特殊情況,例如新增具有資源的 jar 檔案,或用於 java_binary 等終端機規則時。
source_jar File; or None; 預設值 = 無
用來建立輸出內容 jar 的來源 jar 檔案。使用 pack_sources 產生這個來源 jar 檔案。
compile_jdeps File; or None; 預設值 = 無
jdeps 資訊,用於 JavaCompileAction 使用的編譯時間依附元件。此版本應為二進位 proto 編碼,並使用 Bazel 隨附的 deps.proto protobuf 處理此檔案。如果有可用的檔案,通常是由標頭編譯器產生。
generated_class_jar File; or None; 預設值 = 無
jar 檔案包含從註解處理期間產生的來源編譯的類別檔案。
generated_source_jar File; or None; 預設值 = 無
因註解處理而建立的來源 Jar,
native_headers_jar File; or None; 預設值 = 無
包含支援原生方法實作 (通常是 javac -h) 的 CC 標頭檔案的 jar 檔案。
manifest_proto File; or None; 預設值 = 無
規則輸出內容的資訊清單資訊 (如果有的話)。此項目應為二進位 proto 編碼,並使用 Bazel 隨附的 manifest.proto protobuf 檔案。IDE 和其他工具可使用這項資訊來提高處理效率。
預設值 = 否
如果設為 true,只會使用這個程式庫進行編譯,而不會在執行階段使用。
deps sequence of JavaInfos; 預設 = []
編譯用於建立輸出 jar 作業的時間依附元件。
runtime_deps sequence of JavaInfos; 預設 = []
這個程式庫所需的執行階段依附元件。
exports sequence of JavaInfos; 預設 = []
供這個程式庫的使用者使用。另請參閱 java_library.exports
exported_plugins sequence of JavaPluginInfos; 預設 = []
匯出的外掛程式清單。選用。
jdeps File; or None; 預設值 = 無
規則輸出內容的 jdeps 資訊 (如果有的話)。此版本應為二進位 proto 編碼,並使用 Bazel 隨附的 deps.proto protobuf 處理此檔案。如果有可用的檔案,通常是由編譯器產生。IDE 和其他工具可使用這項資訊來提高處理效率。
native_libraries sequence of CcInfos; 預設 = []
CC 這個程式庫所需的原生程式庫依附元件。

annotation_processing

java_annotation_processing JavaInfo.annotation_processing

傳回套用至此 Java/Java 型目標的註解處理工具相關資訊。

已淘汰:請改用 plugins (傳回因使用目標而套用的註解處理工具相關資訊)。 可能會傳回 None

api_generating_plugins

JavaPluginData JavaInfo.api_generating_plugins

傳回 API 產生由這個目標定義或匯出的外掛程式相關資料。

這些註解處理工具會先套用至 Java 目標,再產生標頭 Jar (包含方法簽章)。如果沒有 API 外掛程式,則系統會從來源產生標頭 jar,藉此減少關鍵路徑。

api_generating_pluginsplugins 的子集。

compilation_info

java_compilation_info JavaInfo.compilation_info

傳回這個 Java/Java 型目標的編譯資訊。 可能會傳回 None

compile_jars

depset JavaInfo.compile_jars

直接在編譯時間傳回這個目標所需的 Jars。可以是介面 jar (ijar 或 hjar)、一般 jar 或是兩者,取決於實作規則的實作方式,決定是否建立介面 jar 檔案。

full_compile_jars

depset JavaInfo.full_compile_jars

直接傳回這個目標所需的一般完整編譯時間 Jars。可以是

注意:JavaInfo.compile_jars 可以傳回介面 Jars 和一般 Jars 的組合。

只有在介面 Jars 不適用於您的規則集 (例如部分 Scala 目標) 的情況下,才使用這個方法。如果您處理的是僅限 Java 的目標,最好透過 JavaInfo.compile_jars 使用介面 Jars

java_outputs

list JavaInfo.java_outputs

傳回這個 Java/Java 型目標的輸出內容。

module_flags_info

JavaModuleFlagsProvider JavaInfo.module_flags_info

傳回 Java 模組旗標設定。

輸出內容

java_output_jars JavaInfo.outputs

傳回這個 Java/Java 型目標的輸出內容。已淘汰:使用 java_outputs。 可能會傳回 None

外掛程式

JavaPluginData JavaInfo.plugins

傳回消耗目標應套用的所有外掛程式相關資料。

這通常是 java_plugin 本身,或是匯出一或多個外掛程式的 java_library

java_library 會執行註解處理,且這個欄位中的所有外掛程式都會顯示在 depsplugins 屬性中。

runtime_output_jars

sequence JavaInfo.runtime_output_jars

傳回此 Java/Java 型目標建立的執行階段 Jars 清單。

source_jars

sequence JavaInfo.source_jars

傳回 Jars 清單,其中包含目標本身的所有來源檔案 (包括註解產生的檔案),亦即「不包括」遞移依附元件的來源。

to_json

string JavaInfo.to_json()

已淘汰,這個 API 已淘汰,並將在近期移除。請勿仰賴這項功能。這項功能已停用 ---incompatible_struct_has_no_methods。請使用這個標記確認您的程式碼是否與即將移除的程式碼相容。
透過 struct 參數建立 JSON 字串。只有在所有 struct 元素 (遞迴) 為字串、整數、布林值、其他結構體、這些型別的清單,或含有這些型別的字串鍵和值的字典時,才適用此方法。系統會將字串中的引號和換行符號逸出。範例:
struct(key=123).to_json()
# {"key":123}

struct(key=True).to_json()
# {"key":true}

struct(key=[1, 2, 3]).to_json()
# {"key":[1,2,3]}

struct(key='text').to_json()
# {"key":"text"}

struct(key=struct(inner_key='text')).to_json()
# {"key":{"inner_key":"text"}}

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json()
# {"key":[{"inner_key":1},{"inner_key":2}]}

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json()
# {"key":{"inner_key":{"inner_inner_key":"text"}}}

已淘汰:請改用 json.encode(x) 或 json.encode_indent(x,這適用於 struct 以外的值,而且不會汙染 struct 欄位命名空間。

to_proto

string JavaInfo.to_proto()

已淘汰,這個 API 已淘汰,並將在近期移除。請勿仰賴這項功能。這項功能已停用 ---incompatible_struct_has_no_methods。請使用這個標記確認您的程式碼是否與即將移除的程式碼相容。
使用 struct 參數建立文字訊息。只有在所有 struct 元素 (遞迴) 為字串、整數、布林值、其他結構體、這些型別的 dict 或清單時,此方法才有效。系統會將字串中的引號和換行符號逸出。結構鍵會按照排序順序疊代。範例:
struct(key=123).to_proto()
# key: 123

struct(key=True).to_proto()
# key: true

struct(key=[1, 2, 3]).to_proto()
# key: 1
# key: 2
# key: 3

struct(key='text').to_proto()
# key: "text"

struct(key=struct(inner_key='text')).to_proto()
# key {
#   inner_key: "text"
# }

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto()
# key {
#   inner_key: 1
# }
# key {
#   inner_key: 2
# }

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto()
# key {
#    inner_key {
#     inner_inner_key: "text"
#   }
# }

struct(foo={4: 3, 2: 1}).to_proto()
# foo: {
#   key: 4
#   value: 3
# }
# foo: {
#   key: 2
#   value: 1
# }

已淘汰:請改用 proto.encode_text(x)。

transitive_compile_time_jars

depset JavaInfo.transitive_compile_time_jars

傳回建構目標所需的轉換式 Jars 組合。

transitive_deps

depset JavaInfo.transitive_deps

已淘汰:請改用 JavaInfo.transitive_compile_time_jars。傳回相同的值。

transitive_native_libraries

depset JavaInfo.transitive_native_libraries

傳回目標所需的一組 CC 原生資料庫。

transitive_runtime_deps

depset JavaInfo.transitive_runtime_deps

已淘汰:請改用 JavaInfo.transitive_runtime_jars。傳回相同的值

transitive_runtime_jars

depset JavaInfo.transitive_runtime_jars

傳回目標的執行階段類別路徑所需的一組轉換式 Jars 組合。

transitive_source_jars

depset JavaInfo.transitive_source_jars

傳回含有目前目標及其所有遞移依附元件來源檔案的 Jars。