0

我正在尝试基于 我在项目根目录下的 BUILD 文件中添加的javadoc.bzl创建一个 javadoc 以加载规则:

load("//rules:javadoc.bzl", "javadoc")

javadoc(
    name = "api-docs",
    srcs = glob(["**/*.java"])
)

但是当我运行它时它失败了,从我看到的使用--sandbox_debug它似乎没有使用任何源文件调用 javadoc 具体运行:bazel build --sandbox_debug :api-docs
我得到:

BUILD:3:8: error executing shell command: '/bin/bash -c mkdir api-docs
external/local_jdk/bin/javadoc -quiet -d api-docs  zip -q -r
bazel-out/darwin-fastbuild/bin/api-docs.zip api-docs/*' failed (Exit
12): sandbox-exec failed: error executing command

后来javadoc: error - No packages or classes specified.

如果我正确理解报告的错误,我会看到external/local_jdk/bin/javadoc -quiet -d api-docs被调用但没有文件作为输入。
我在这里做错了什么?

4

1 回答 1

1

glob不会越过包边界,因此 glob 不会匹配其中包含BUILD文件的任何目录。我怀疑您BUILD在尝试匹配的目录中有一个文件。

在您的 src 目录中,将以下内容添加到您的BUILD文件中

filegroup(
   name = "javasrcs",
   srcs = glob(["**/*.java"]),
   visibility = ["//visibility:public"],
)

然后在您的顶级BUILD文件中引用它,如下所示:

load("//rules:javadoc.bzl", "javadoc")

javadoc(
    name = "api-docs",
    srcs = ["//src:javasrcs"],
)

假设源在目录中src

于 2020-11-17T09:03:36.887 回答