The 文档 https://golang.org/ref/mod#go-mod-vendor says,
go modvendor命令在目录中构造一个名为vendor的目录
主模块的根目录,包含所有包的副本
支持主模块中包的构建和测试所需的。
仅通过主程序之外的包的测试导入的包
不包括模块。
golangby示例 https://golangbyexample.com/packages-modules-go-second/ says:
您还可以将供应商目录签入到您的 VCS(版本
控制系统)。这在某种意义上变得有用,因为没有一个
依赖项需要在运行时下载,因为它已经存在
在签入 VCS 的供应商文件夹中
我认为模块(go.mod
,go.sum
)负责版本控制。我还认为只有在第一次运行程序时才会下载依赖项。
那么命令是怎样的go mod vendor
有用?它的目的或用例是什么?
Go Modules 负责版本控制,但不一定负责模块从互联网上消失或互联网不可用。如果模块不可用,则无法构建代码。
Go Proxy 会通过镜像模块在一定程度上缓解消失的模块,但它可能不会一直对所有模块都这样做:
为什么以前可用的模块在镜像中变得不可用?
proxy.golang.org 不会永久保存所有模块。造成这种情况的原因有很多,但其中一个原因是 proxy.golang.org 无法检测到合适的许可证。在这种情况下,只有模块的临时缓存副本可用,如果从原始源中删除该副本并变得过时,则该副本可能会变得不可用。校验和仍将保留在校验和数据库中,无论它们在镜像中是否变得不可用。
更多信息请访问:https://proxy.golang.org/ https://proxy.golang.org/
另一种方法是分叉模块并使用Go 模块replace指示 https://golang.org/ref/mod#go-mod-file-replace它允许将导入路径重定向到另一个,例如你的叉子,在go.mod
文件而不更改您的代码。该方法由科尔曼·安西奥 https://stackoverflow.com/users/1218512/colm-anseo.
关于 Internet 访问,如果您运行大型服务器场并需要在多台计算机上安装代码,则从 Internet 下载到服务器场中的每台计算机可能效率低下且存在安全风险。使用起来可能会更有效率go mod vendor
进入内部存储库并复制它。大公司使用内部方法将代码部署到其数据中心的多个服务器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)