我的项目中有两个依赖项。
go.mod:
module github.com/test-org/test-repo
go 1.12
require (
github.com/foo/bar v1.0.0
github.com/raz/mataz v1.0.0
)
运行后go mod download,这两个依赖项会导致github.com/shared/dependency下载两个不同版本的 a。有趣的是,它github.com/shared/dependency包含子模块,例如:
dependency
-- go.mod
-- api
-- go.mod
检查下载的模块显示两个版本已下载到我的本地计算机:
ls ${GOPATH}/pkg/mod/github.com/shared:
[dir] dependency [dir] dependency@v1.1.0
ls ${GOPATH}/pkg/mod/github.com/shared/dependency:
[dir] api@v1.2.0
查看这些目录的内容:
${GOPATH}/pkg/mod/github.com/shared/dependency@v1.1.0:
v1.1.0 中整个存储库的文件内容,包括api带有自己go.mod文件的文件夹。
${GOPATH}/pkg/mod/github.com/shared/dependency/api@v1.2.0:
apiv1.2.0 中 repo 文件夹的文件内容,包括go.mod文件。
最后,.go我的文件中有一个test-repo具有以下设置的文件:
package test-package
import (
"github.com/foo/bar"
)
func MyFunc() {...bar.NewBar()...}
MyFunc当我尝试运行(其他地方存在的)测试时,我收到一条unknown import path...ambiguous import...错误消息。例如
go test github.com/test-org/test-repo/test-package -test.run=TestMyFunc -v:
unknown import path "github.com/shared/dependency/api": ambiguous import: found github.com/shared/dependency/api in multiple modules:
github.com/shared/dependency v1.1.0 (${GOPATH}/pkg/mod/github.com/shared/dependency@v1.1.0/api)
github.com/shared/dependency v1.2.0 (${GOPATH}/pkg/mod/github.com/shared/dependency/api@v1.2.0)
错误指向存储库中导入的文件import行。鉴于有两个可用版本,它不知道在我的本地文件夹中选择哪个:.gogithub.com/shared/dependency/apigithub.com/foo/barapi${GOPATH}/pkg/mod
${GOPATH}/pkg/mod/github.com/shared/dependency@v1.1.0/api
${GOPATH}/pkg/mod/github.com/shared/dependency/api@v1.2.0
有什么方法可以使该go test
调用工作(解决依赖冲突)?我的两个依赖项都没有明确要求下载完整的shared/dependency@v1.1.0
,但由于某种原因它被拉进来。如果不存在,它似乎会解决问题。
侃侃尔雅
一只甜甜圈
慕桂英546537
相关分类