Go Modules
機制是Go
官方的包管理機制,從Go 1.11
開始做爲experiment feature
引入,GO111MODULE
是這個特性的開關。golang
GO111MODULE
GO111MODULE
有三個值:auto
、on
和off
,默認值爲auto
,GO111MODULE
的值會影響Go compiler
的依賴管理模式緩存
- off:
go compiler
會始終使用GOPATH mode
,不管要構建的源碼目錄是否在GOPATH
路徑下,go compiler
都會在傳統GOPATH
和vendor
目錄下,搜索目標程序依賴的go package
- on:
go compiler
會始終使用module-aware mode
,不管要構建的源碼是否位於GOPATH
路徑下,go compiler
都會在go mod
命令的緩存目錄$GOPATH/pkg/mod
下搜索對應版本的依賴package
- auto:使用
GOPATH mode
仍是module-aware mode
,取決於要構建的源碼目錄是否位於$GOPATH/src
爲根的目錄體系下,且是否包含go.mod
文件
go mod
命令
golang
使用go mod
命令來實現包的管理ui
go mod
命令說明:code
命令 | 說明 |
---|---|
download | download modules to local cache |
edit | edit go.mod from tools or scripts |
graph | print module requirement graph(打印模塊依賴圖) |
init | initialize new module in current directory |
tidy | add missing and remove unused module |
vendor | make vendored copy of dependencies |
verify | verify dependencies have expected content |
why | explain why packages or modules are needed |
go mod
命令使用:ip
- 執行命令
go mod init
,會在當前目錄下生成一個go.mod
文件。執行這條命令以前,但其那目錄若是已經存在go.mod
文件,須要先刪除- 若是生成的
go mod
文件不完整,則繼續執行go mod tidy
命令,它會添加缺失的模塊以及移除不須要的模塊,執行後會生成go.sum
文件- 執行
go mod verify
來檢查當前模塊的依賴是否所有都下載完畢,以及下載以後是否被修改,若是依賴沒有問題,則會打印all modules verified
- 執行命令
go mod vendor
生成vendor
目錄,該目錄下存放的是go.mod
文件描述的依賴包,以及一個modules.txt
go mod
相關文件執行命令go mod init
以及go mod tidy
以後,會生成兩個文件,分別爲:ci
go.mod
:包含模塊名稱、go
的版本、該模塊的依賴信息go.sum
:模塊全部依賴的校驗和