我试图弄清楚是否可以在没有go工具更新我的go.mod文件的情况下运行gomod供应商。
我专门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
我的另一个选择是修改复制的源,无论 mod 供应商将其加载到哪里,但是 不知道如何处理。
提前致谢
每 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 all
、go test all
和go mod tidy
都对模块的要求进行了相同的编辑。