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