问题描述
我正在尝试为仅嵌入文件集合的项目创建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",)