是否可以使用 bazel 查询来输出隐式(或任何)规则的完整语法?

Is it possible to use bazel query to output the full syntax for an implicit (or any) rule?

我的目标是编写一个新的显式规则,该规则等同于内部规则但稍作修改(嵌入某些依赖项但不嵌入其他依赖项)。

假设我有如下规则:

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_binaryjava_library 的逻辑是用 Java 编写的,并且存在于 Bazel 二进制文件中。但是,对于 Java 规则使用的许多原始操作,有一个 Starlark API。这些可用于制定自定义 Java 规则。事实上,有一个正在进行的项目可以透明地用 Starlark 实现替换内置 Bazel Java 规则。