gpt4 book ai didi

go - 使用go mod时如何将本地依赖添加到vendor

转载 作者:IT王子 更新时间:2023-10-29 02:31:11 25 4
gpt4 key购买 nike

之前我用的是go dep,现在office确保官方工具是go mod

当我使用go dep时,可以在Gopkg.toml中添加本地依赖包到vendor和ignored> 忽略从 repo 中搜索包。我可以正常执行go dep update

现在我用的是go mod,我也是给vendor添加了本地依赖包,在go.mod中添加了exclude。但是当我执行 go mod tidy 时,它会删除包,即使我的项目存在 import xxx

我做了什么:

  1. 创建新项目
  2. 执行 go mod init
  3. 修改go.mod 排除privaterepo.com/bb/bb

  4. 将我的本地模块复制到 vendor ,因为本地模块位于不支持 https 的私有(private)仓库中。

  5. 现在 vendor 就像:

    vendor
    |-github.com/aa/aa
    |-privaterepo.com/bb/bb

  6. 导入“privaterepo.com/bb/bb”
  7. 执行 go build -mod vendor
  8. 我收到错误“找不到路径 privaterepo.com/bb/bb 的模块”9 总是尝试替换,但还是不行

那么,我应该怎么做才能将本地包 添加到vendor 并避免go mod 删除它?

最佳答案

So, what should I do to add local package to vendor and avoid go mod remove it?

嗯,我认为你不能这样做。这不是它的工作原理。 go mod vendor 管理您的 vendor 文件夹。

而不是 exclude 从 go.mod 打包你应该添加一个 replace 指令来指示 go 工具不是从 privaterepo.com 而是从本地文件系统。引自 https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive

replace also can be used to inform the go tooling of the relative or absolute on-disk location of modules in a multi-module project, such as:

   replace example.com/project/foo => ../foo

所以在你的情况下:不要尝试手动将 privaterepo.com/bb/bb 放在 vendor 中,而是将它放在当前项目之外的某个地方并使用

replace privaterepo.com/bb/bb => ../bb

然后让 go mod 将这些东西从文件系统复制到您的 vendor 。

关于go - 使用go mod时如何将本地依赖添加到vendor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53588764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com