前言
go mod 是golang最新的模块依赖管理的工具,推荐使用。
go 1.11通过设置环境变量GO111MODULE来决定是否启用
go1.13已经默认支持,以下以1.13为例
配置环境变量
- export GOPROXY=https://mirrors.aliyun.com/goproxy 或
export GOPROXY=https://goproxy.io - export GOPATH="/Users/XXXX/goDownload"
goproxy :设置拉取依赖包的代理
gopath: 用了go mod为什么还需要配置gopath呢? go mod download之后会把依赖的包下载到$GOPATH/pkg/mod,可以理解为下载路径
开始
创建新项目
goland 新建项目的时候可以直接指定使用go mod模式,创建完成后就有go.mod文件
另外也可以直接创建一个空的项目目录,之后再go mod init XXXX,也会生成go.mod
- go mod init XXXX 初始化项目,将项目的初始信息写入go.mod,里面有xxxx的项目名和go版本号,注意:XXXX是项目名,不是路径
旧项目
外部导入的项目,如果原来就是go mod模式,在设置里面开启go mod检查依赖
如果原来不是go mod包管理,修改目录结构之后,依然要go mod init XXXX,然后go mod tidy,
有时代码中import的路径也需要修改。
下载依赖包
-
直接在代码中import
之后打开命令行 : go mod tidy 就会下载依赖(默认下载release版本),直接使用就可以了
关于命令行:golang里面可以直接打开命令行
在哪个目录右键,命令行当前路径就在哪个目录下,go build,go run也可以直接使用
vs code也有一样的命令行
go mod命令
- go mod init # 初始化当前目录为模块根目录,生成go.mod, go.sum文件
- go mod download # 下载依赖包
- go mod tidy #整理检查依赖,如果缺失包会下载或者引用的不需要的包会删除
- go mod vendor #复制依赖到vendor目录下面
- go mod 可看完整所有的命令
- go mod graph 以文本模式打印模块需求图
- go mod verify 验证依赖是否正确
- go mod edit 编辑go.mod文件
以上是基本使用,go mod出彩的地方在于版本管理。
一种是go get 的时候指定版本,另外可以在go.mod文件中 对某个依赖进行版本替换。