Go語言包管理工具Godep的用法

一、為什麼要包管理

默認Go的第三方包都是放在Gopath的src目錄下,而且這些包都沒有版本號的概念,這樣的可能會出現一些問題。

舉個例子:當A同事將開發完程序之後,此時可能引用瞭一個第三方的包,過瞭不久之後,B同事接手瞭該項目,此時如果B同事通過go get 命令獲取瞭包,而且包的版本進行瞭升級,恰巧這個包又不兼容以前的版本,這就會導致程序編譯錯誤等問題。或者當這個維護的第三方包刪除瞭,那麼B同學則不能下載到該包。

由上面的例子就能知道,為什麼需要進行包的依賴管理瞭。

go裡面進行包依賴管理的工具有幾個。godep就是其中之一。

二、安裝godep

1.安裝方法: go get github.com/tools/godep

2.驗證是否安裝成功:在shell裡面鍵入 godep ,應該會出現幫助信息。

Usage:
 
        godep command [arguments]
 
The commands are:
 
    save     list and copy dependencies into Godeps             //save命令主要是用於保存當前的依賴
    go       run the go tool with saved dependencies            //主要是用於執行Go程序,相當於在原來的go命令上套瞭一層,因為涉及到瞭包管理
    get      download and install packages with specified dependencies  //get命令主要是用於獲取當前指定的依賴包
    path     print GOPATH for dependency code
    restore  check out listed dependency versions in GOPATH         //把依賴的包都下載到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

三、演示如何使用godep

如下項目使用瞭第三方的包,那麼我們就可以使用godep進行包管理

1. 在項目根目錄,執行godep save 命令,如果執行成功,則會生成兩個文件夾 Godeps 和 vendor

godep save 會把當前包所依賴的所有第三方包掃描出來,然後將源代碼放在vendor目錄下。

GoDeps保存的是第三方包的依賴信息

Vendor保存所有依賴的第三方包

可以查看一下Godep.json

{
    "ImportPath": "godepDemo/protobuf",
    "GoVersion": "go1.10",
    "GodepVersion": "v80",
    "Deps": [
        {
            "ImportPath": "github.com/golang/protobuf/proto",
            "Comment": "v1.3.2-1-g4c88cc3f",
            "Rev": "4c88cc3f1a34ffade77b79abc53335d1e511f25b"
        }
    ]
}

Deps這一個字段裡面保存著當前依賴包的路徑、git提交的版本號信息。下次在拉下代碼之後,執行Go build 就會執行Vendor裡面的代碼,這樣就再也不用擔心代碼不一致的問題。

備註:當引用的第三方包要升級瞭怎麼辦,那麼就修改Godep.json裡面的提交的版本號就行瞭。

Godep是怎麼實現版本管理的,可以參考下面這個圖。

總結如何使用godep

  • 1.保證程序能夠正常編譯
  • 2.執行godep save 命令,執行之後會將所有的依賴的第三方包掃描出來,生成Godeps和Vendor目錄
  • 3.提交上面兩個文件夾到自己的代碼庫,提交之後我們代碼中的第三方依賴就固定下來瞭。
  • 4.如果需要更新依賴的版本,那麼直接更新godep.json裡面的第三方包的版本號,然後再執行一次godep save,最後提交到我們的代碼庫就行瞭。

例如:可以查看一下我依賴的protobuf的commitId

然後更新一下Godeps.json裡面的版本號

到此這篇關於Go使用Godep進行包管理的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: