我有一个Bazel WORKSPACE,我想从它导入一个外部的Go git存储库。我想知道最好的做法是始终拥有Gazelle BUILD.bazel文件,还是我的源工作区可以以某种方式触发Gazelle生成文件,这样我就不需要签入它们?后者是,如果我不是上游回购的所有者,这种情况是有意义的。
发布于 2017-11-21 23:55:55
外部git存储库是常规的Go repo吗?"go get“可以构建它吗?如果是这样,当前的最佳实践是在您的工作区文件中使用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标志生成单个构建文件,根据需要进行修改,并在new_git_repository或new_http_archive中使用该文件。这个工作流程现在相当笨拙,我们计划在未来大大简化它。
https://stackoverflow.com/questions/47350841
复制相似问题