1

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

假设我有如下规则:

java_binary(
    name = "cipher_jar",
    srcs = glob([
        "*.java",
    ]),
    ...
)

有一个隐含的规则,如下所示:

bazel query  "//cipher:cipher_jar_deploy.jar"

是否有一些query我可以运行来强制 bazeljava_binary为这个隐式规则输出与上述规则等效的内容?


看起来 using--output=build只是让我得到了原始规则,而我想要一个明确告诉 bazel 嵌入依赖项的规则。

4

1 回答 1

1

内置 Bazel Java 规则的逻辑(例如java_binaryjava_library)是用 Java 编写的,并且存在于 Bazel 二进制文件中。但是,对于 Java 规则使用的许多原始操作,都有一个Starlark API。这些可用于制定自定义 Java 规则。事实上,有一个正在进行的项目用 Starlark 实现透明地替换内置的 Bazel Java 规则。

于 2021-08-13T18:17:48.003 回答