Bazel/Golang:规则 'go_embed_data' 不包含已声明的提供商 'GoArchive'

Bazel/Golang: rule 'go_embed_data' doesn't contain declared provider 'GoArchive'

我正在尝试为我的项目创建一个仅嵌入一组文件的 Bazel 规则。嵌入规则如下:

go_embed_data(
    name = "my_files_go",
    src = [
        "embedded/src1", "embedded/src2"
    ],
    package = "my_lib",
    var = "myFiles",
)

然后我在 go_library 规则中添加:

go_library(
    name = "library",
    srcs = [
        "library.go",
    ],
    importpath = "github.com/nickfelker/golang-app",
    deps = [
        ":my_files_go"
        "//otherLib",
    ],
)

然而,当我尝试构建它时,我最终遇到了一个我在其他地方找不到的模糊错误。

Error: <target //library:my_files_go> (rule 'go_embed_data') doesn't contain declared provider 'GoArchive'
ERROR: Analysis of target '//:binary' failed; build aborted: Analysis of target '//library:library' failed

我该如何解决这个错误?

go_embed_data 创建的规则不依赖于 go_library 规则。相反,它应该被视为 srcs 之一,如下所示:

go_embed_data(
    name = "my_files_go",
    src = [
        "embedded/src1", "embedded/src2"
    ],
    package = "my_lib",
    var = "myFiles",
)

go_library(
    name = "library",
    srcs = [
        ":my_files_go",
        "library.go",
    ],
    importpath = "github.com/nickfelker/golang-app",
    deps = [
        "//otherLib",
    ],
)