有,總比沒有要好:Go依賴管理工具dep

來源:互聯網
上載者:User

介紹

早期的Golang被很多開發人員所詬病的一個問題就是依賴包的管理。Golang 1.5 release版本的發布之前,只能通過設定多個GOPATH的方式來解決這個問題,例如:我兩個工程都依賴了Beego,但A工程依賴的是Beego1.1,B工程依賴的是Beego1.7,我必須設定兩個GOPATH來區分,並且在切換工程的時候GOPATH也得切換,無比痛苦。終於終於在Golang 1.5 release 開始支援除了GOROOT和GOPATH之外的依賴查詢,那就是vender,於是很多大佬開始造輪子,造得比較好的應該是depglide

主角出場

今天的主角是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

功能介紹

  1. dep init


    image.png

備份當前的vender,建立vender目錄並下載項目中的所有依賴包,產生Gopkg.lockGopkg.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.

  1. dep status
    用來查看項目依賴的詳細資料和狀態,非常清晰。


    image.png
  2. dep ensure
    嘗試確保所有的依賴庫都已經安裝,如果沒有即下載,相當於對依賴庫做累加式更新。

  3. dep ensure add github.com/RoaringBitmap/roaring@^1.0.1
    下載添加新的依賴庫,並累加式更新資訊清單檔和校正描述檔案。github.com/RoaringBitmap/roaring 是依賴庫的包名,1.0.1是庫的版本號碼。

本機快取

當然dep不會每次都去下載,其工作原理和Mevan一樣,會優先在本地倉庫搜尋,本地倉庫未找到即在網路上下載,並添加到本地倉庫。
$GOPATH/pkg/dep/sources

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.