Gazelle可以参加外部Go项目吗?

时间:2017-11-17 12:37:22

标签: go bazel

我有一个Bazel WORKSPACE,我想从中导入一个外部Go git存储库。我想知道最佳做法是否始终拥有Gazelle BUILD.bazel文件,或者我的源WORKSPACE是否能以某种方式触发Gazelle生成文件,所以我不需要检查它们?如果我不是上游回购的所有者,后者就是这种情况。

1 个答案:

答案 0 :(得分:3)

外部git存储库是否是常规的Go repo?可以"去得到"建立吗?如果是这样,当前的最佳做法是在WORKSPACE文件中使用go_repository。像这样:

load("@io_bazel_rules_go//go:def.bzl", "go_repository")

go_repository(
    name = "org_golang_x_tools",
    importpath = "golang.org/x/tools",
    commit = "663269851cdddc898f963782f74ea574bcd5c814",
)

这将检查存储库并使用Gazelle生成内部构建文件。它还处理Go导入路径重定向。

如果存储库没有以这种方式干净地构建,您可以检查它,使用Gazelle的-experimental_flat标志生成单个构建文件,根据需要进行修改,并将其与{一起使用{1}}或new_git_repository。这个工作流程现在非常尴尬,我们计划在未来对其进行大量简化。