介紹
早期的Golang被很多開發人員所詬病的一個問題就是依賴包的管理。Golang 1.5 release版本的發布之前,只能通過設定多個GOPATH的方式來解決這個問題,例如:我兩個工程都依賴了Beego,但A工程依賴的是Beego1.1
,B工程依賴的是Beego1.7
,我必須設定兩個GOPATH來區分,並且在切換工程的時候GOPATH也得切換,無比痛苦。終於終於在Golang 1.5 release 開始支援除了GOROOT和GOPATH之外的依賴查詢,那就是vender
,於是很多大佬開始造輪子,造得比較好的應該是dep
和glide
。
主角出場
今天的主角是dep
,Golang的官方依賴工具,用來管理和下載工程依賴的工具,以下是官方的介紹
dep is a prototype dependency management tool for Go. It requires Go 1.9 or newer to compile. dep is safe for production use.
安裝
- MacOS
brew install dep
- Linux
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
- Windows
go get -u github.com/golang/dep/cmd/dep
Windows得自己編譯,並且確認把 $GOPATH/bin
添加到環境變數$PATH
下
驗證
在命令列輸入dep
並斷行符號,會出現以下提示的話,說明已經安裝成功了。
image.png
功能介紹
dep init
image.png
備份當前的vender
,建立vender
目錄並下載項目中的所有依賴包,產生Gopkg.lock
和Gopkg.toml
以下是兩個檔案的作用說明,簡單講Gopkg.toml
是資訊清單檔,Gopkg.lock
是校正描述檔案。盡量不要修改,避免造成兩個檔案不同步的錯誤。
A manifest - a file describing the current project's dependency requirements. In dep, this is the Gopkg.toml file. A lock - a file containing a transitively-complete, reproducible description of the dependency graph. In dep, this is the Gopkg.lock file.
dep status
用來查看項目依賴的詳細資料和狀態,非常清晰。
image.png
dep ensure
嘗試確保所有的依賴庫都已經安裝,如果沒有即下載,相當於對依賴庫做累加式更新。
dep ensure add github.com/RoaringBitmap/roaring@^1.0.1
下載添加新的依賴庫,並累加式更新資訊清單檔和校正描述檔案。github.com/RoaringBitmap/roaring
是依賴庫的包名,1.0.1
是庫的版本號碼。
本機快取
當然dep不會每次都去下載,其工作原理和Mevan一樣,會優先在本地倉庫搜尋,本地倉庫未找到即在網路上下載,並添加到本地倉庫。
$GOPATH/pkg/dep/sources