【问题标题】:go mod vendor without update to latest去 mod 供应商而不更新到最新版本
【发布时间】:2019-08-23 07:48:51
【问题描述】:

我正在尝试确定是否可以在不使用 go 工具更新我的 go.mod 文件的情况下运行 go mod vendor。

我专门go get package/subpackage@commit 并使用正确的版本提交我的go.mod

然后我运行go mod vendor,它会自动调整我刚刚专门设置的包的版本。

我查看了此页面无济于事:https://github.com/golang/go/wiki/Modules#how-do-i-use-vendoring-with-modules-is-vendoring-going-away

我需要使用供应商,因为我运行了一个脚本来编辑一些供应商的部门。我正在查看以下构建流程:

GO111MODULE=on go get package/subpackge@commit
GO111MODULE=on go mod vendor
./Script/patch_vendors.sh --write
GO111MODULE=off go build

我的另一个选择是修改复制的源代码,无论 go mod 供应商下载它到哪里,但是 不知道如何处理。

提前致谢

【问题讨论】:

标签: go go-modules


【解决方案1】:

https://tip.golang.org/cmd/go/#hdr-Maintaining_module_requirements:

go 命令本身会自动更新go.mod 文件以保持require 语句的标准格式和准确性。

任何找到不熟悉的导入的 go 命令都会查找包含该导入的模块,并自动将该模块的最新版本添加到 go.mod。 […]

任何 go 命令都可以确定缺少模块要求并且必须添加 […]。

go mod vendor 命令复制您的包及其测试的所有传递导入,因此它会自动更新go.mod 文件以确保所有导入的包都存在。

所以这里的问题很可能是您为package/subpackage 选择的commit 未能提供出现在程序的传递导入中的某些包。如果正确,您应该会发现 go list allgo test allgo mod tidy 都对您的模块要求进行了相同的编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2016-02-26
    • 2018-04-16
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多