go 代碼依賴管理工具mod使用

什么是go mod

Go.mod是Golang1.11版本新引入的官方包管理工具用于解決之前沒有地方記錄依賴包具體版本的問題,方便依賴包的管理。類似于php的composer,java的maven;
Go.mod其實就是一個Modules,關于Modules的官方定義為:

Modules是相關Go包的集合,是源代碼交換和版本控制的單元。go命令直接支持使用Modules,包括記錄和解析對其他模塊的依賴性。Modules替換舊的基于GOPATH的方法,來指定使用哪些源文件。

Modules和傳統(tǒng)的GOPATH不同,不需要包含例如src,bin這樣的子目錄,一個源代碼目錄甚至是空目錄都可以作為Modules,只要其中包含有go.mod文件。

如何使用

  • 開啟go mod
export GO111MODULE=on

go1.11 的 module 功能是默認不會開啟的,想要開啟也非常簡單, 通過一個環(huán)境變量即可開啟go module

  • 初始化
go mod init

該命令會初始化一個mod管理的項目 在項目路徑下會有兩個文件go.mod go.sum

  • 下載包存放位置

golang在運行、編譯項目的時候,都會檢查依賴并下載依賴包。在啟動了go mod之后,通過go mod下載的依賴包,不在放在GOPATH/src中,而是放到GOPATH/pkg/mod中;

  • 關于go.sum

你會發(fā)現(xiàn)除了 go.mod 這個文件之外,還有一個 go.sum 文件,這個文件保存了每個依賴庫的對應的hash值,來保證下載回來的代碼庫是正確的,不被人篡改的;

  • 關于$GOPROXY 被“墻”的問題
export GOPROXY=https://goproxy.io

當我們使用go的時候,go默認會直接從代碼庫(golang.org)中去下載所需的相關依賴,GOPROXY 這個環(huán)境變量可以讓我們控制自己從哪里去下載源代碼

goproxy.io 是一個開源項目,當用戶請求一個依賴庫時,如果它發(fā)現(xiàn)本地沒有這份代碼就會自動請求源,然后cache到本地,用戶就可以從 goproxy.io 請求到數(shù)據(jù)。當然,這些都是在一個請求中完成的。goproxy.io 只支持 go module 模式。當用戶執(zhí)行 go get 命令時,會去檢查GOPROXY//@v/list這個文件中是否有用戶想要獲取的版本,如果有,就依次獲取GOPROXY//@v/.info、GOPROXY//@v/.mod、GOPROXY//@v/.zip 等文件,如果沒有就直接從源碼庫中去下載

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容