Go 1.11 Module 介绍
go 1.11 发布了一种新的模式来管理go程序的依赖库,这种方式不同于vendor模型。
它主要提供下面几个重要特性:
- 更方便的脱离GOPATH来工作(我理解是,逐渐淡化GOPATH,GOPATH一度给入门golang的新人留下很多坑)
- 使用
$GOPATH/pkg/mod来存储go mod的缓存文件,提高go get速度 - 可选的
$GOPROXY和goproxy交互机制- 提供公司级或局域网级私有
go mod服务器 - 为
golang.org/x/text等老大难第三方依赖库提供缓存和提速
- 提供公司级或局域网级私有
启用 go mod
为启用go mod,需要配置GO111MODULE环境变量:
GO111MODULE=off无模块支持,go 会从$GOPATH和vendor文件夹寻找包。GO111MODULE=on模块支持,go 会忽略$GOPATH和vendor文件夹,只根据go.mod下载依赖。GO111MODULE=auto在$GOPATH/src外面且根目录有go.mod文件时,开启模块支持。
go mod 对其它命令的影响
go get- 如果强制启用 go mod, go get现在支持针对版本号去get指定项目。
go get必须在一个启用了 go mod 的项目的根目录去执行,这样执行过go get,将会自动改下本目录下的go.mod文件。
go buildgo build会先检查当前目录中go.mod记录的依赖,并检查$GOPATH/pkg/mod中的缓存,如果没有,则会启动go get流程。go build可以强制提供一个参数go build -mod vendor来使用vendor模式,而不是go mod自身在gopath中缓存的文件。
使用GOPROXY
此处有一个开源版本的 goproxy.io
和它的github主页 github.com/goproxyio
自建GOPROXY server
Athens is a Server for Your Go Packages
项目地址 https://github.com/gomods/athens
Athens可以用来在公司内部建立自己的私有go mod服务器,
或者在公网建立一个对外公开的GOPROXY server。
参考:
商务合作
系统开发、网站定制、直播业务
wx moryaden
tel 180-6609-5382
浙公网安备 33010602011771号