To use go module for install golang dependences
go modules 是 golang 1.11 新加的特性,是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
GO111MODULE
GO111MODULE 有三个值:off, on和auto(默认值)
- GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
- GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
- GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
- 当前目录在GOPATH/src之外且该目录包含go.mod文件
- 当前文件在包含go.mod文件的目录下面。
当modules 功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module。
GOPROXY
当我们使用go的时候,go默认会直接从代码库中去下载所需的相关依赖,GOPROXY 这个环境变量可以让我们控制自己从哪里去下载源代码,如果 GOPROXY 没有设置,go 会直接从代码库下载相关依赖代码
export GOPROXY=https://goproxy.io
go mod
golang 提供了 go mod命令来管理包。
命令 | 说明 |
---|---|
download | download modules to local cache(下载依赖包) |
edit | edit go.mod from tools or scripts(编辑go.mod) |
graph | print module requirement graph (打印模块依赖图) |
init | initialize new module in current directory(在当前目录初始化mod) |
tidy | add missing and remove unused modules(拉取缺少的模块,移除不用的模块) |
vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
verify | verify dependencies have expected content (验证依赖是否正确) |
why | explain why packages or modules are needed(解释为什么需要依赖) |
go mod int your_project_name (必须是项目名称,否则不能使用项目中包,小坑)
go mod tidy
go.mod 内容:
module data-dict-api
go 1.12
require (
github.com/BurntSushi/toml v0.3.1
github.com/aliyun/aliyun-oss-go-sdk v2.0.1+incompatible
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/davecgh/go-spew v1.1.1
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/gin-contrib/cors v1.3.0
github.com/gin-gonic/gin v1.4.0
github.com/go-redis/redis v6.15.2+incompatible
github.com/gorilla/websocket v1.4.0
github.com/imdario/mergo v0.3.7 // indirect
github.com/jinzhu/gorm v1.9.10
github.com/lib/pq v1.2.0
github.com/newrelic/go-agent v2.9.0+incompatible
github.com/satori/go.uuid v1.2.0 // indirect
github.com/stretchr/testify v1.3.0
go.uber.org/atomic v1.4.0 // indirect
go.uber.org/multierr v1.1.0 // indirect
go.uber.org/zap v1.10.0
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c
gopkg.in/olivere/elastic.v5 v5.0.81
k8s.io/api v0.0.0-20190717022910-653c86b0609b
k8s.io/apimachinery v0.0.0-20190717022731-0bb8574e0887
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab
k8s.io/utils v0.0.0-20190712204705-3dccf664f023 // indirect
)