首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bazel版本缺少严格的依赖关系

Bazel版本缺少严格的依赖关系
EN

Stack Overflow用户
提问于 2020-08-28 03:00:57
回答 1查看 2.8K关注 0票数 1

我正在尝试用brazel构建一个Go应用程序。这是我正在处理的一个现有的私有GitHub代码库(位置:github.xyz.com/repo-name),我的目标是从一个main.go文件创建一个二进制文件,该文件依赖于其他一些Go文件作为它的方法。这是我在名为e2e的文件夹中的BUILD.bazel文件,其中包含所有这些go文件:

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

go_binary(
    name = "e2e",
    embed = [":go_default_library"],
    visibility = ["//visibility:public"],
)

go_library(
    name = "go_default_library",
    srcs = ["main.go"],
    data = [
        "//cmd/iasd",
        "//migrations:migration_files",
        "//test/iamd:client-ca-bundle.pem",
    ] + glob(
        ["testdata/**"],
    ),
    importpath = "github.xyz.com/repo-name/test/e2e",
    visibility = ["//visibility:public"],
    deps = [
        "//test:go_default_library",
        "//vendor/github.com/bazelbuild/rules_go/go/tools/bazel:go_default_library",
        "//vendor/github.com/golang-migrate/migrate:go_default_library",
        "//vendor/github.com/golang-migrate/migrate/database/cockroachdb:go_default_library",
        "//vendor/github.com/golang-migrate/migrate/source/file:go_default_library",
        "//vendor/github.com/google/uuid:go_default_library",
        "//vendor/github.com/lib/pq:go_default_library",
        "//vendor/github.com/pkg/errors:go_default_library",
        "//vendor/google.golang.org/grpc:go_default_library",
        "//vendor/google.golang.org/grpc/credentials:go_default_library",
        "//api/grpc/v1/applications:go_default_library",
        "//api/grpc/v1/clients:go_default_library",
        "//pkg/oauth2/mtls:go_default_library",
        "//vendor/github.com/coreos/go-oidc:go_default_library",
        "//vendor/github.com/dgrijalva/jwt-go:go_default_library",
        "//vendor/golang.org/x/oauth2:go_default_library",
    ],
)

下面是导入在我的main.go文件中的样子:

代码语言:javascript
复制
import (
    "context"
    "crypto/tls"
    "encoding/json"
    "io/ioutil"
    "net/http"
    "net/url"
    "strings"
    "time"
    "log"
    "fmt"
    "io"
    "os"

    "github.com/pkg/errors"
    "github.com/coreos/go-oidc"
    "github.com/dgrijalva/jwt-go"
    "github.xyz.com/repo-name/api/grpc/v1/applications"
    "github.xyz.com/repo-name/api/grpc/v1/clients"
    "github.xyz.com/repo-name/pkg/oauth2/mtls"
    "github.xyz.com/repo-name/test/e2e"
    "github.xyz.com/repo-name/test"
    "golang.org/x/oauth2"
    "google.golang.org/grpc"
)

现在,在执行命令bazel run //test/e2e:e2e时,我得到以下错误:

代码语言:javascript
复制
compilepkg: missing strict dependencies:
    /private/var/tmp/_bazel_<myname>/a9b32769d59e90b5398bc5d8a988c877/sandbox/darwin-sandbox/394/execroot/github_xyz_com_repo_name/test/e2e/main.go: import of "github.xyz.com/repo-name/test/e2e"
No dependencies were provided.

这是因为我的主文件中的导入github.xyz.com/repo-name/test/e2e。为了包含导入,如果我在deps:"//test/e2e:go_default_library"中将此代码添加到我的BUILD.bazel文件中,结果会出现以下错误:

代码语言:javascript
复制
"//test/e2e:go_default_library: cycle in dependency graph:
    //test/e2e:e2e
.-> //test/e2e:go_default_library [self-edge]"

我理解错误的背景,但我找不到合适的方法来解决它。我应该在BUILD.bazel文件中进行哪些更改才能正确地包含依赖项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-31 14:28:14

我通过在e2e文件夹内的一个新文件夹中添加我的main.go文件解决了这个问题(同时将帮助文件保留在e2e文件夹中)。这样,当我将main.go文件的依赖项添加到帮助器文件时,不会导致循环依赖错误。

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

https://stackoverflow.com/questions/63622610

复制
相关文章

相似问题

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