【发布时间】:2019-05-04 10:51:44
【问题描述】:
之前我用go dep,现在office确保官方工具是go mod。
当我使用go dep 时,我可以将本地依赖包添加到供应商和Gopkg.toml 中的ignored 以忽略从repo 搜索包。我可以正常执行go dep update。
现在我使用go mod,我还将本地依赖包添加到vendor,并在go.mod中添加exclude。但是当我执行go mod tidy 时,即使我的项目存在import xxx,它也会删除包。
我做了什么:
- 创建新项目
- 执行 go mod init
修改 go.mod
exclude privaterepo.com/bb/bb将我的本地模块复制到供应商,因为本地模块位于不支持 https 的私有仓库上。
- 现在供应商就像:
vendor |-github.com/aa/aa |-privaterepo.com/bb/bb - 导入“privaterepo.com/bb/bb”
- 执行 go build -mod vendor
- 比我得到错误 “找不到路径 privaterepo.com/bb/bb 的模块” 9 总是尝试用replace,但也不管用
那么,我应该怎么做才能将本地包添加到供应商并避免go mod删除它?
【问题讨论】:
-
你试过
go mod vendor吗? -
什么是“本地包”?所有的包都是平等的。
-
@ttomalak 如果我不执行
go mod vendor,它就不会创建供应商文件夹。 -
@Volker 我的意思是我的私人仓库中的包,它不支持 https 并且需要身份验证。所以唯一的方法是我 git clone 使用 ssh 而不是我将包复制到供应商。如vendor/xxx.com/xxx/xx。
-
好的,明白了。但我还是不明白这个问题。你能更清楚地描述这个问题吗?
标签: go vendor go-modules