title: "Go 1.11 Module"
date: 2018-10-26T23:50:56+08:00
draft: false
---git
go 1.11 发布了一种新的模式来管理go程序的依赖库,这种方式不一样于vendor
模型。github
它主要提供下面几个重要特性: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 get
go get
必须在一个启用了 go mod 的项目的根目录去执行,这样执行过go get
,将会自动改下本目录下的go.mod
文件。go build
go build
会先检查当前目录中go.mod
记录的依赖,并检查$GOPATH/pkg/mod
中的缓存,若是没有,则会启动go get
流程。go build
能够强制提供一个参数go build -mod vendor
来使用vendor模式,而不是go mod自身在gopath中缓存的文件。此处有一个开源版本的 goproxy.io服务器
和它的github主页 github.com/goproxyioui
Athens is a Server for Your Go Packagescode
项目地址 https://github.com/gomods/athensserver
Athens能够用来在公司内部创建本身的私有go mod
服务器,
或者在公网创建一个对外公开的GOPROXY server
。get
参考:it