首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Gazelle,如何使它使用工作区中定义的go_repository?

对于Gazelle,如何使它使用工作区中定义的go_repository?
EN

Stack Overflow用户
提问于 2018-01-24 13:28:18
回答 1查看 1.9K关注 0票数 2

在我的工作区中,我定义了导入路径golang.org/x/net的go_repostitory。

代码语言:javascript
复制
go_repository(
   name = "org_golang_x_net",
   commit = "5ccada7d0a7ba9aeb5d3aca8d3501b4c2a509fec",
   importpath = "golang.org/x/net",
)

但是当我运行瞪羚时,添加到BUILD.Bazel中的依赖项不是BUILD.Bazel相反,它是这样的: //golang.org/x/net/context:go_default_library

为什么羚羊忽视了定义的go_repository?是否有一种方法可以考虑在工作区中定义的dep?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 16:15:07

我猜从您的前一个问题中看,这是因为您使用的是一个空前缀。

瞪羚决定分几个步骤进口Bazel标签:

  1. 如果您的工作区中有一个具有匹配的go_libraryimportpath,Gazelle将使用该库的名称。
  2. 如果导入路径低于存储库的顶级前缀,则导入将被视为“本地”,因此您将得到一个类似于//golang.org/x/net/content:go_default_library的标签。
    • 由于在顶层使用空前缀,此捕获将捕获每个未知的导入。
    • 这方面应加以改进。Gazelle的解析器应该知道在不同目录中定义的前缀(目前,这些前缀仅用于确定生成规则上的importpath属性)。我已经注册了bazelbuild/bazel-瞪羚#101来解决这个问题。

  1. 如果导入不被认为是本地的,Gazelle将根据外部模式为外部存储库或供应商目录生成标签。

现在,您可能需要向顶级构建文件添加一个指令,如下所示:

代码语言:javascript
复制
# gazelle:prefix __do_not_match__

这将基本上禁用第二种情况,因为没有任何导入将从这一点开始。在src目录中仍然有一个空前缀(在src/BUILD.bazel中用# gazelle:prefix设置),所以库仍然有正确的importpath指令。不过,您可能希望将其设置为更具体的子目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48423654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档