在Bazel中,如果你在规则中使用了一个提供者但没有进行声明,就会出现这个错误。要解决这个问题,你需要在BUILD文件中添加对应的提供者声明。
下面是一个示例代码,演示了如何在BUILD文件中声明一个提供者:
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_embed_data")
go_binary(
name = "my_binary",
srcs = ["main.go"],
importpath = "example.com/my/package",
visibility = ["//visibility:public"],
)
go_embed_data(
name = "my_data",
srcs = ["data/*.txt"],
importpath = "example.com/my/package",
visibility = ["//visibility:public"],
deps = [
"@io_bazel_rules_go//go:def.bzl",
"@io_bazel_rules_go//go:go_default_library",
"@io_bazel_rules_go//go/tools/go_rules_dependencies",
],
# 添加提供者声明
go_embed_data_provider = "@io_bazel_rules_go//go/tools/go_rules_dependencies:GoArchive",
)
在上面的示例中,我们向go_embed_data
规则添加了一个提供者声明go_embed_data_provider
,它的值是@io_bazel_rules_go//go/tools/go_rules_dependencies:GoArchive
。这样就解决了错误信息中提到的问题。
确保在添加提供者声明之前,你已经正确引入了相关的依赖项。
上一篇:Bazel. 有没有不使用 `--run_under` 的方式在同一目录下运行脚本?
下一篇:Bazel/NodeJS-nodejs_binarydatareferencinganotherrulenotworkingasexpected