首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gazelle没有创建正确的依赖关系吗?

Gazelle没有创建正确的依赖关系吗?
EN

Stack Overflow用户
提问于 2020-10-12 02:27:32
回答 1查看 1.7K关注 0票数 1

考虑一个存储库github.com/myacct/sandbox,其顶部有一个ji目录:

代码语言:javascript
复制
$ ls -CFR
.:
BUILD.bazel  WORKSPACE  one/

./one:
oneonone.go

$ cat BUILD.bazel
load("@bazel_gazelle//:def.bzl", "gazelle")

# gazelle:prefix github.com/myacct/sandbox/ji

gazelle(name = "gazelle")

很标准的东西,直接从文档里拿出来。我已经运行了bazel clean --expunge。现在:

代码语言:javascript
复制
$ bazel run //:gazelle
Starting local Bazel server and connecting to it...
INFO: Analyzed target //:gazelle (66 packages loaded, 7036 targets configured).
INFO: Found 1 target...
Target //:gazelle up-to-date:
  bazel-bin/gazelle-runner.bash
  bazel-bin/gazelle
INFO: Elapsed time: 23.191s, Critical Path: 5.81s
INFO: 49 processes: 13 internal, 36 linux-sandbox.
INFO: Build completed successfully, 49 total actions
INFO: Build completed successfully, 49 total actions

让我们看看它做了什么:

代码语言:javascript
复制
$ cat one/BUILD.bazel
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")

go_library(
    name = "one_lib",
    srcs = ["one.go"],
    importpath = "github.com/symbiont-io/sandbox/ji/one",
    visibility = ["//visibility:private"],
    deps = [
        "@org_golang_google_api//calendar/v3:go_default_library",
        "@org_golang_google_api//people/v1:go_default_library",
        "@org_golang_x_net//context:go_default_library",
        "@org_golang_x_oauth2//:go_default_library",
        "@org_golang_x_oauth2//google:go_default_library",
    ],
)

go_binary(
    name = "one",
    embed = [":one_lib"],
    visibility = ["//visibility:public"],
)

deps看起来不错,这就是我在one.go中导入的内容。

下面是它失败的原因:

代码语言:javascript
复制
$ bazel build //one:one
ERROR: /home/ji/sandbox/ji/one/BUILD.bazel:3:11: no such package '@org_golang_google_api//people/v1': The repository '@org_golang_google_api' could not be resolved and referenced by '//oneonone:oneonone_lib'
ERROR: Analysis of target '//one:one' failed; build aborted: Analysis failed
INFO: Elapsed time: 0.087s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets configured)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-12 02:50:19

我发现文档实际上是非常详尽的。

无论如何,您需要运行update-repos。您可以运行一次性命令来导入所需的特定存储库:

代码语言:javascript
复制
bazel run //:gazelle -- update-repos google.golang.org/api/people/v1

或者,您可以创建一个Go模块,然后从go.mod导入依赖项

代码语言:javascript
复制
bazel run //:gazelle -- update-repos -from_file=go.mod

我推荐使用后者。使用go mod init创建一个模块,然后您可以定期运行一个脚本来更新您的依赖项:

代码语言:javascript
复制
# update go.mod
go get -d ./...

# update repos with Gazelle
bazel run //:gazelle -- update-repos -from_file=go.mod
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64307608

复制
相关文章

相似问题

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