接觸go語言之前寫了一些nodejs的App,所以對於npm的包管理方式還是覺得挺方便的,但轉移到go語言平台後,由於官方並未推出自己的包管理工具,所以只能藉助於第三方的一些工具完成,本篇主要介紹一些目前使用的go的包依賴管理工具,用來協助程式的開發. gpm
gpm工具使用來完成go依賴庫下載的工具,非常的簡單,只需要建立自己的一個Godeps檔案,並把依賴的包寫到檔案中,這樣我們就可以直接通過命令列來執行下載任務,並把依賴下載到當前的GOPATH路徑中.
一個典型的Godeps檔案中,我們可以不標記任何庫依賴的版本資訊,這樣預設下載最新的依賴庫,也可以通過標記下載指定的版本,只需要在依賴庫的後面寫上版本或者git的tag即可,如下所示:
$ cat Godeps # This is a comment github.com/nu7hatch/gotrail v0.0.2 github.com/replicon/fast-archiver v1.02 #This is another comment! github.com/nu7hatch/gotrail 2eb79d1f03ab24bacbc32b15b75769880629a865
具體的安裝gpm的方式,可以參考gpm官方的簡易教程,mac下可以通過brew直接下載,下面的是linux作業系統下面的安裝方式.
$ git clone https://github.com/pote/gpm.git && cd gpm$ git checkout v1.4.0 # You can ignore this part if you want to install HEAD.$ ./configure$ make install
下面介紹一個使用gpm的簡單一實例,我們寫了一個簡單的go程式,並且包含了一個原始碼main.go裡面依賴了一個外部的go庫,操作流程如下:
export GOPATH=/home/mike/go-project cd /home/mike/go-project mkdir src bin pkg
main.go原始碼
package main import ( "github.com/aokoli/goutils" ) func main(){ r,_:=goutils.RandomAscii(10) println(r) }
在src下面建立一個Godeps檔案,該檔案包含依賴的外部庫的版本,常值內容如下:
github.com/nu7hatch/gotrail
添加進去後直接儲存退出,該檔案我們可以推送到git庫裡面,當我們git下載該git源碼的時候,在src路徑下執行gpm get即可將所有的依賴下載下來. gvp
如果我們使用GOPATH指向我們的項目目錄的話,預設情況下go get或者上面的gpm get 都會在src目錄中下載所有的依賴,使得我們自己寫的代碼和依賴代碼在一起,如何分離依賴和原始碼,我們可以藉助於gvp工具,這個工具會在本地建立一個新的目錄,並協助我們新增這個目錄到GOPATH路徑下.這樣我們的程式就可以做到源碼和依賴分離.
gvp工具的安裝,這個工具的安裝方式同gpm基本相同:
$ git clone https://github.com/pote/gvp.git && cd gvp$ git checkout v0.2.1 # You can ignore this part if you want to install HEAD.$ ./configure$ make install
完成以後我們可以到項目的根目錄下執行如下的命令
$ source gvp
我們會看到項目下面多了一個.godeps檔案,這裡我們再去查看自己的GOPATH變數就變為了
$ echo $GOPATH/home/mike/go-project/.godeps:/home/mike/go-project
接下來如果我們通過利用gpm下載新的依賴包,這時候所有的依賴代碼就會進入godeps下面的src檔案,我們仍舊可以在項目本身的src下面編寫原始碼,最終這兩個工具可以很方便的協助我們管理組件依賴.對了我們可以直接通過gvp out退出當前的項目
本文放置到個人的blog中,歡迎大家訪問