go版本要求:>= 1.11
优势
项目不必放置在GOPATH/src下
项目代码与依赖库代码分离
主要操作
初始化go项目
mkdir gomod_demo
go mod init gomod_demo
# 或者带上完整组织结构信息
go mod init my.company.com/my.team/gomod_demo
代理
# 也可使用其它代理,如:https://goproxy.io
export GOPROXY="https://mirrors.aliyun.com/goproxy/"
# go 版本 >= 1.13
export GOPRIVATE=*.my.company.com
私有仓库
先配置git:vim ~/.gitconfig
,增加
[url "ssh://git@my.company.com"]
insteadOf = http://my.company.com
编译
go build
会自动下载依赖包,依赖包默认放在:$GOPATH/pkg/mod/cache/download
私有仓库
对于内部代码,可以使用 go get -v -insecure my.company.com/my.team/another_repo
下载依赖
生成vendor
想象如果在打包节点上进行build,也需要重复下载内部或者外部包,会有额外的时间开销。为了加速build,可以在项目目录下建立vendor目录,放置所有依赖库的代码 go mod vendor
之后可跳过依赖包下载直接进行 build:go build -mod=vendor