是否可以使用Bazel Query输出隐式(或任何)规则的完整语法?
我的目标是编写一个新的显式规则,该规则等同于内部规则,但稍作修改(嵌入某些依赖项,但不嵌入其他依赖项)。
假设我有如下规则:
java_binary(
name = "cipher_jar",
srcs = glob([
"*.java",
]),
...
)
有一个隐式规则,如下所示:
bazel query "//cipher:cipher_jar_deploy.jar"
是否有一些query
我可以运行以强制Bazel输出与此隐式规则的上述java_binary
规则等价的内容?
看起来使用--output=build
只是获取原始规则,而我需要一个显式告诉Bazel嵌入依赖项的规则。
解决方案
内置Bazel Java规则(如java_binary
和java_library
)的逻辑是用JAVA编写的,位于Bazel二进制文件中。然而,Java规则使用的许多基本操作都有一个Starlark API。这些规则可用于制定定制的Java规则。事实上,有一个正在进行的项目,用Starlark实现透明地替换内置的Bazel Java规则。
相关文章