Golang從入門到進階系列:Go Modules機制

Go Modules機制是Go官方的包管理機制,從Go 1.11開始做爲experiment feature引入,GO111MODULE是這個特性的開關。golang

GO111MODULE

GO111MODULE有三個值:autoonoff,默認值爲autoGO111MODULE的值會影響Go compiler的依賴管理模式緩存

  • off:go compiler會始終使用GOPATH mode,不管要構建的源碼目錄是否在GOPATH路徑下,go compiler都會在傳統GOPATHvendor目錄下,搜索目標程序依賴的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

  1. 執行命令go mod init,會在當前目錄下生成一個go.mod文件。執行這條命令以前,但其那目錄若是已經存在go.mod文件,須要先刪除
  2. 若是生成的go mod文件不完整,則繼續執行go mod tidy命令,它會添加缺失的模塊以及移除不須要的模塊,執行後會生成go.sum文件
  3. 執行go mod verify來檢查當前模塊的依賴是否所有都下載完畢,以及下載以後是否被修改,若是依賴沒有問題,則會打印all modules verified
  4. 執行命令go mod vendor生成vendor目錄,該目錄下存放的是go.mod文件描述的依賴包,以及一個modules.txt

go mod相關文件

執行命令go mod init以及go mod tidy以後,會生成兩個文件,分別爲:ci

  • go.mod:包含模塊名稱、go的版本、該模塊的依賴信息
  • go.sum:模塊全部依賴的校驗和
相關文章
相關標籤/搜索