使用bazel-gazelle构建Go Proto时出现导入依赖错误
问题修复方案
问题根源
user_service_go_proto生成的Go代码导入了github.com/abcd/user/proto,但该目标未在deps中声明对应的Go proto库依赖。虽然user_service_proto依赖user_proto,但Go Proto库之间需要显式声明依赖关系,Bazel无法自动推导跨go_proto_library的依赖。
修复步骤
修改proto/BUILD文件中的user_service_go_proto规则,添加deps字段指向user_go_proto:
go_proto_library( name = "user_service_go_proto", compilers = ["@io_bazel_rules_go//proto:go_grpc"], importpath = "github.com/abcd/userservice/proto", protos = [ ":user_proto", ":user_service_proto", ], deps = [":user_go_proto"], # 新增依赖声明 )
验证修复
重新执行构建命令:
bazel build proto:all
补充说明
- Go proto库的依赖关系需要和Go代码的导入严格对应,每个被导入的Go proto包都要在
deps中声明对应的go_proto_library目标。 - 你的
option go_package值与go_proto_library的importpath配置完全匹配,这部分无需调整。
内容的提问来源于stack exchange,提问作者Mohammed Nadeem
相关产品推荐
相关产品推荐

