简介

Go modules 是 Go 语言的官方默认的包管理方案。

在Go 1.11 的时候就已经发布了,只是默认没有启用,需要通过参数开启

GO111MODULE="on"

在 Go1.12、 Go1.13已经有了很大的改善。

在Go1.14已经正式启用,推荐在生产上使用。

之前在GOPATH的环境下载一个包都需要用到梯子,现在go modules 直接使用goproxy进行代理设置方便多了。

golang服务配置管理(Golang包管理gomodules)(1)


设置

使用go modules的时候还是要配置GOPATH变量的

变量

echo 'export GOROOT=/opt/go' >> /etc/profile echo 'export GOPATH=/data/gopath' >> /etc/profile echo 'export PATH=/opt/go/bin:$PATH' >> /etc/profile source /etc/profile

开启modules

go env -w GO111MODULE=on

不管默认有没有开,我们这里可以直接手动设置开启。

golang服务配置管理(Golang包管理gomodules)(2)

设置代理

go env -w GOPROXY=https://goproxy.cn,direct

也可以设置多个

go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct

设置代理,可以快速下载到包,不再需要梯子了。

使用

使用go modules的时候,需要生成go.mod文件来保存包信息。

生成go.mod

go mod init project

把project替换成项目的名称就可以了,调用本项目下的包就是import project/.../...

自动检查依赖

go mod tidy

不知道项目下有依赖什么包,直接使用这个命令就会自动在go.mod生成依赖包的记录

下载依赖

go mod download

根据go.mod下载对应的依赖包

查看现有的依赖结构

go mod graph

go mod edit 编辑 go.mod 文件

导出项目所有的依赖到vendor目录

go mod vendor

这个一般也没多大必要,如果你怕你的依赖某天有可能被删除,就保存一下包

校验模块是否被篡改过

go mod verify

查看为什么需要依赖某模块

go mod why gopkg.in/ini.v1

gopkg.in/ini.v1就是模块的名称

总结

如果使用vscode开发,安装好vscode-go,一些包管理的工具会自动帮忙完成的。

golang服务配置管理(Golang包管理gomodules)(3)

,