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 required
因编译(例如 javac、scalac 等)而创建的 jar 文件。
compile_jar File; or None;必需
作为编译时依赖项添加以代替 output_jar 的 jar。通常,这是 run_ijar 生成的 ijar 文件。如果您无法使用 ijar,请考虑改用 stamp_ijar 的输出。如果您不想使用这两个选项,只需传递 output_jar 即可。在一些特殊情况下,此参数可以设置为 None,例如添加包含资源的 jar 或在 java_binary 等终端规则中使用时。
source_jar File; or None; default = None
用于创建输出 jar 的源 jar。使用 pack_sources 生成此源代码 jar。
compile_jdeps File; or None; default = None
jdeps 关于 JavaCompileAction 使用的编译时依赖项的信息。它应该是使用 Bazel 随附的 deps.proto protobuf 编码的二进制 proto。此文件通常由头文件编译器生成(如果有)。
generated_class_jar File; or None; default = None
这是一个 jar 文件,包含从注解处理期间生成的源代码编译的类文件。
generated_source_jar File; or None; default = None
因注释处理而创建的源代码 jar。
native_headers_jar File; or None; default = None
包含支持原生方法实现的 CC 头文件的 jar 文件(通常是 javac -h 的输出)。
manifest_proto File; or None; default = None
规则输出的清单信息(如果有)。它应该是使用 Bazel 随附的 manifest.proto protobuf 编码的二进制 proto。IDE 和其他工具可以利用这些信息进行更高效的处理。
default = False
如果为 true,则仅将此库用于编译,而不在运行时使用。
deps sequence of JavaInfos; default = []
用于创建输出 jar 的编译时依赖项。
runtime_deps sequence of JavaInfos; default = []
此库所需的运行时依赖项。
exports sequence of JavaInfos; default = []
可供此库用户使用的库。另请参阅 java_library.exports
exported_plugins sequence of JavaPluginInfos; default = []
导出的插件列表。选填。
jdeps File; or None; default = None
规则输出的 jdeps 信息(如果有)。它应该是使用 Bazel 随附的 deps.proto protobuf 编码的二进制 proto。此文件通常由编译器生成(如果有)。IDE 和其他工具可以利用这些信息进行更高效的处理。
native_libraries sequence of CcInfos; default = []
CC 此库所需的原生库依赖项。

annotation_processing

java_annotation_processing JavaInfo.annotation_processing

返回应用于此类 Java/Java 目标的注解处理器的相关信息。

已废弃:请改用 plugins(它会返回有关使用方目标要应用的注解处理器的信息)。 可能会返回 None

api_generating_plugins

JavaPluginData JavaInfo.api_generating_plugins

返回有关如何通过 API 生成由此目标定义或导出的插件的数据。

在生成 Java 目标的标头 jar(包含方法签名)之前,这些注解处理器会先应用于 Java 目标。如果不存在 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,具体取决于规则实现是否选择创建接口 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 停用。使用此标记验证您的代码是否符合即将移除的代码。
使用结构体参数创建 JSON 字符串。仅当所有结构体元素(以递归方式)都是字符串、整数、布尔值、其他结构体、这些类型的列表或包含这些类型的字符串键和值的字典时,此方法才有效。字符串中的引号和换行符会进行转义。示例:
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_unsubscribe(x),它们适用于结构体以外的值,并且不会污染结构体字段命名空间。

to_proto

string JavaInfo.to_proto()

已弃用。此 API 已弃用,很快就会被移除。请不要依赖它。已使用 ---incompatible_struct_has_no_methods 停用。使用此标记验证您的代码是否符合即将移除的代码。
使用 struct 参数创建一条文本消息。仅当所有结构体元素(以递归方式)都是字符串、整数、布尔值、其他结构体、字典或这些类型的列表时,此方法才有效。字符串中的引号和换行符会进行转义。结构体键按排序顺序进行迭代。示例:
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。