Go:go mod vendor 使用
1.背景
我们基于 go mod 机制来管理我们项目的依赖库版本,其中 go.mod 记录了依赖库版本信息。

一般第三方依赖库(包括公司内网gitlab上的依赖库),其源码都不被包含在我们的项目内部,而是在编译的时候go连接公网、内网下载到本地GOPATH,然后编译。
问题是,有些时候需在无公网、无内网(无法连接内网gitlab)的情况下编译go项目,如何做呢?
在此时,需使用go mod vendor将项目的依赖库下载到项目内部,作为项目的一部分来编译。
PS:
- 虽然通常不会也不需要在无公网、无内网环境实时编译,因为go的可移植性很好,常以可执行文件方式交付部署,但并不能排除此种可能;
- 防止依赖库因为某种原因被删除、移动,导致找不到依赖并编译失败;
- 对新手来说,下载一些墙外的依赖可能略有困难;
- 其他…
总之,我们的目的是使用 go mod vendor,将项目的依赖库下载到项目内部,即项目中包含依赖库源码,依赖库如同项目的一部分,也受到项目的版本管控(git、svn…)。
2.环境
go环境:
D:\workspace\demo>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\梁翠翠\AppData\Local\go-build
set GOENV=C:\Users\梁翠翠\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set

本文介绍了如何使用gomodvendor工具将Go项目的依赖库下载到项目内部,以便在无公网或内网环境进行编译。通过gomodvendor,可以创建一个vendor目录,包含所有必要的依赖包,确保项目在各种环境下都能正常构建,同时避免依赖库丢失的问题。文章详细讲解了使用过程、原理,并提供了相关参考资料。
2万+

被折叠的 条评论
为什么被折叠?



