javadoc 的 Bazel 规则无法传递输入源
Bazel rule for javadoc fails to pass input sources
我正在尝试基于 javadoc.bzl
创建一个 javadoc
我在项目根目录下的 BUILD 文件中添加了加载规则:
load("//rules:javadoc.bzl", "javadoc")
javadoc(
name = "api-docs",
srcs = glob(["**/*.java"])
)
但是当我 运行 它失败了,从我使用 --sandbox_debug
看到的情况来看,它似乎没有使用任何源文件调用 javadoc
具体来说 运行ning: 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
被调用但没有文件作为输入。
我在这里做错了什么?
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
我正在尝试基于 javadoc.bzl
创建一个 javadoc
我在项目根目录下的 BUILD 文件中添加了加载规则:
load("//rules:javadoc.bzl", "javadoc")
javadoc(
name = "api-docs",
srcs = glob(["**/*.java"])
)
但是当我 运行 它失败了,从我使用 --sandbox_debug
看到的情况来看,它似乎没有使用任何源文件调用 javadoc
具体来说 运行ning: 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
被调用但没有文件作为输入。
我在这里做错了什么?
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