Go mod包管理
介绍
Go1.11
版本(已上版本)支持module
功能,用于源代码更替和版本控制。可替代对GOPATH
的依赖,不必在$GOPATH/src
下新建项目,而是任意包含go.mod
的目录都可以是工程目录。注意:$GOPATH目录还有要配置的。
使用
1.现在在vagrant/www/go/下面创建test项目目录(ps:GOPATH="/vagrant/go",可以用go env查看)
mkdir test
2.进入test执行,go mod init [模块名](ps:[模块名]必须跟项目同名)
go mod init test
看到提示 “go: creating new go.mod: module test” 说明 go mod 初始化成功了,会在当前目录下生成一个 go.mod 文件
包含go.mod文件的目录也被称为模块根,也就是说,go.mod 文件的出现定义了它所在的目录为一个模块
3.引入项目或者创建main.go
这里我引入的是一个项目,注意的main.go文件,其他的不要
4.go mod tidy -v // 添加确实模块
添加完成可以去GOPATH/pkg看到有一个mod文件夹,里面就是刚刚下载的模块
5.go mod vendor -v // 当前目录下生产vendor目录,包含所有依赖包
ll可以看到test项目项目多了一个vendor文件夹
同时go.mod和go.sum多了一下
6.运行项目
go run main.co
go mod
命令
go mod download // 下载依赖到本地缓存,查看GOCACHE缓存地址
go mod graph //把模块之间的依赖图显示出来
go mod init [模块名] // 当前目录初始化和创建`go.mod`文件,最好是项目名
go mod tidy -v // 添加确实模块和移除不必要的模块
go mod vendor -v // 当前目录下生产vendor目录,包含所有依赖包
go mod verify // 检查当前模块的依赖是否已经存储在本地下载的源代码缓存中
go build -mod=vendor // 依赖module下的vendor生成可执行文件
go get rsc.io/sampler //更新稳定版依赖
GO111MODULE环境变量
GO111MODULE=off // 不用module功能,GOPATH模式寻找依赖包
GO111MODULE=on // module模式,build时找module下的vendor,GOPATH承担下载依赖包到GOPATH/pkg/mod
GO111MODULE=auto // 根据当前目录是否包含go.mod来判断