go mod依赖管理

好文

链接
链接

GO111MODULE

mod模式是否开启由环境变量GO111MODULE决定,GO111MODULE 环境变量有三个值:on,auto(默认值),off

on:强制开启mod模式,此模式下不会去 GOPATH/srcproject/vendor 下加载第三方依赖包,只会去GOPATH/pkg/mod下载加载。
auto:如果项目在 GOPATH/src下,则转为普通模式,否则,转为mod模式。

off:关闭mod模式,转为普通的GOPATH/src,project/vendor模式。

mod模式下安装的依赖包都存放在GOPATH/pkg/mod目录下,在 mod 模式下导入第三方包时会去GOPATH/pkg/mod目录下加载,而不是普通模式下的GOPATH/src | project/vendor目录。

半自动维护依赖,你甚至可以不需要使用get预先安装依赖,module在run test build时会检测未下载的依赖,并自动下载它们。

go mod支持语义化版本号,比如
go get [email protected]

init

初始化项目为module模式:go mod init moduleName

tidy

虽然是自动依赖(自动下载)。但建议,当我们下载了别人的mod项目到本地时,可以直接run,mod会自动下载未安装的依赖,也可以执行一次tidy手动维护一次依赖,当我们要上传自己本地的项目到仓库时,应该先执行以下tidy命令,清理一下无用的依赖,再上传。

vendor

将module项目转为普通的vendor项目,这时就需要将项目移至GOPATH/src下,并要保证projectName同moduleName保持一致,否则要手动去修改项目模块包的加载路径了。

其他命令

download    download modules to local cache (下载依赖的module到本地cache))
edit        edit go.mod from tools or scripts (编辑go.mod文件)
graph       print module requirement graph (打印模块依赖图))
init        initialize new module in current directory (在当前文件夹下初始化一个新的module, 创建go.mod文件))
tidy        add missing and remove unused modules (增加丢失的module,去掉未使用的module)
vendor      make vendored copy of dependencies (将依赖复制到vendor下)
verify      verify dependencies have expected content (校验依赖)
why         explain why packages or modules are needed (解释为什么需要依赖)

go.mod 文件必须要提交到 git 仓库,但 go.sum 文件可以不用提交到 git 仓库(gi t忽略文件 .gitignore 中设置一下)。

猜你喜欢

转载自blog.csdn.net/TBBetter/article/details/106529144