我有一个依赖于 https://github.com/aws/aws-sdk-go-v2 的 bazel 项目,当我尝试构建我的项目时失败:
/private/var/tmp/_bazel_jason/0e236569105a6029115d2df15af0d848/external/com_github_aws_aws_sdk_go_v2_service_s3/internal/arn/BUILD.bazel:3:11: in go_library rule @com_github_aws_aws_sdk_go_v2_service_s3//internal/arn:arn: target '@com_github_aws_aws_sdk_go_v2_service_internal_s3shared//arn:arn' is not visible from target '@com_github_aws_aws_sdk_go_v2_service_s3//internal/arn:arn'. Check the visibility declaration of the former target if you think the dependency is legitimate
根据 https://github.com/bazelbuild/bazel-gazelle/issues/619 中的注释,我已经能够通过在 repositories.bzl 中应用补丁来修改违规包中的可见性子句来解决这个问题。这行得通,但很麻烦。
我知道指令 # gazelle:go_visibility
,但我不清楚这是否或如何解决我的问题。我已经尝试在 repositories.bzl 中使用它,如下所示,但我仍然遇到上述相同的错误:
go_repository(
name = "com_github_aws_aws_sdk_go_v2_service_s3",
build_directives = [
"gazelle:go_visibility @com_github_aws_aws_sdk_go_v2_service_internal_s3shared//:__subpackages__",
],
importpath = "github.com/aws/aws-sdk-go-v2/service/s3",
sum = "h1:EMihU4D4F9S/TytkQGcHSLeUHjRRjnPi0D+Xkoq6odU=",
version = "v1.6.0",
)
我也尝试在这里使用 "gazelle:go_visibility @com_github_aws_aws_sdk_go_v2_service_internal_s3shared//arn:arn:__subpackages__"
,但这给了我一个错误 invalid label '@com_github_aws_aws_sdk_go_v2_service_internal_s3shared//arn:arn:__subpackages__' in element 1 of attribute 'visibility' in 'go_library' rule: invalid target name 'arn:__subpackages__': target names may not contain ':'