golang 包依賴管理 godep 使用

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

[TOC]

介紹

godep是解決包依賴的管理工具,目前最主流的一種,原理是掃描記錄版本控制的資訊,並在go命令前加殼來做到依賴管理

  • godep 建議在 golang 1.6 以後使用

  • godep 依賴 vendor 具體查看 https://stackoverflow.com/questions/37237036/how-should-i-use-vendor-in-go-1-6

  • 請做好 vendor 管理

安裝

https://github.com/tools/godep

go get -u -v github.com/tools/godep

成功安裝後,在$GOPATH的bin目錄下會有一個godep可執行檔二進位檔案,後面執行的命令都是用這個,建議這個目錄加入到全域環境變數中

包管理使用 godep

以下命令都是在工程的根目錄運行

拉取依賴 restore 用於開發

godep restore

建議開發過程使用這個命令來同步依賴庫

如果下載的項目中只有Godeps.json檔案,而沒有包含第三庫則可以使用godep restore這個命令將所有的依賴庫下來到$GOPATH\src中 用於開發

godep restore執行時,godep會按照Godeps/Godeps.json內列表,依次執行go get -d -v來下載對應依賴包到GOPATH路徑下

如果某個原先的依賴包儲存路徑(GOPATH下的相對路徑)與下載url路徑不一致,比如kuberbetes在github上路徑是github.com/kubernetes,而代碼內import則是my.io,則會導致無法下載成功,也就是說godep restore不成功。這種只能手動,比如手動建立$GOPATH/my.io目錄,然後git clone

檢出依賴 save

godep save
  • 自動掃描目前的目錄所屬包中import的所有外部依賴庫(非系統庫)
  • 將所有的依賴庫下來下來到當前工程中,產生檔案 Godeps\Godeps.json 檔案

  • 在沒有 Godeps` 檔案的情況下,產生模組依賴目錄vendor`檔案夾

如果是開發依賴使用三方庫,需要固定使用某個版本,請完全提交Godeps`和vendor`檔案夾

低版本的 godep 產生的是Godeps/_workspace,建議升級

godep save能否成功執行需要有兩個要素:

  • 當前或者需掃描的包均能夠編譯成功:因此所有依賴包事先都應該已經或go get或手工操作儲存當前GOPATH路徑下
  • 依賴包必須使用了某個代碼管理工具(如git,hg):這是因為godep需要記錄revision

這個命令用於編譯構建的,三方構建工具需要額外配置構建參數

godep 編譯運行 build

項目用godep管理後,要編譯和運行項目的時候再用go run和go build顯然就不行

因為go命令是直接到GOPATH目錄下去找第三方庫,且在1.6以後支援vendor方式編譯,而使用godep下載的依賴庫放到Godeps/workspace目錄下的,但是不影響繼續使用依賴GOPATH目錄,所以與三方工具本身不衝突

故使用

godep go build XXX

godep中的go命令,就是將原先的go命令加了一層殼,執行godep go的時候,會將當前項目的workspace目錄加入GOPATH變數中

Godeps目錄的作用

godep save時godep把所有依賴包代碼從GOPATH路徑拷貝到Godeps目錄下,並去除代碼管理目錄。這個用處主要是為了支撐godep go tool的一系列操作,尤其是git clone了程式碼程式庫下來後,通常直接用godep go install xxx即可完成編譯,一定程度上能夠緩解golang比較嚴格的代碼路徑和包管理帶來的煩惱。

而在使用IDE時,可以通過把vendor添加到GOPATH實現代碼跳轉和編譯等功能,比較方便

godep其他命令

   save     list and copy dependencies into Godeps   go       run the go tool with saved dependencies   get      download and install packages with specified dependencies   path     print GOPATH for dependency code   restore  check out listed dependency versions in GOPATH   update   update selected packages or the go version   diff     shows the diff between current and previously saved set of dependencies   version  show version info
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.