Golang包依賴管理工具gb
原文鏈接: http://tabalt.net/blog/golang-package-dependency-management-tool-gb/
一個Golang項目工程通常由 bin 、 pkg 、 src 三個子目錄構成,gb在這個概念的基礎上新增了一個 vendor 目錄來存放項目依賴的第三方包;一個gb項目的工作目錄里包含該項目需要的所有Go代碼。
gb項目不放在你的$GOPATH中,也不需要為你的gb項目設置或修改$GOPATH。依賴的第三包需要放到 vendor/src 目錄中,并使用gb來編譯和測試你的項目。
安裝gb
gb的官網是: http://getgb.io/ ,github地址是: https://github.com/constabulary/gb/ 。
使用如下命令即可安裝gb:
go get github.com/constabulary/gb/...
安裝gb后,會有 gb 和 gb-vendor 兩個可執行文件放入你的 $GOPATH/bin 目錄中,查看或編輯你的 ~/.bash_profile 文件,確保你的 $GOPATH/bin 目錄已經加入 $PATH 中:
export PATH=$PATH:$GOPATH/bin
使用gb進行項目開發
我們以一個簡單的提供HTTP頁面的“Hello World”程序來學習一下gb的使用。為了體現gb管理第三方包依賴的特性,我們引入一個支持HTTP服務優雅重啟的第三方包 github.com/tabalt/gracehttp 。
創建gb項目目錄結構:
cd ~/helloworld mkdir -p src/helloworld mkdir -p vendor/src
編寫“Hello World”程序
#vim src/helloworld/main.go package mainimport ( "fmt" "net/http"
"github.com/tabalt/gracehttp"
)
func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello world") })
err := gracehttp.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) }
}</pre>
添加依賴的第三包
gb vendor fetch github.com/tabalt/gracehttp目前為止整個項目目錄結構如下:
./ |-- src | `-- helloworld | `-- main.go `-- vendor |-- manifest `-- src `-- github.com `-- tabalt `-- gracehttp |-- README.md |-- connection.go |-- gracehttpdemo | `-- main.go |-- listener.go `-- server.go編譯執行程序
gb build helloworld ./bin/helloworld打開一個新終端并執行 curl http://127.0.0.1:8080/ ,將會輸出:
hello world提交所有代碼到git倉庫
git init git add . git commit -am 'init hello world project with gb' git add remote -v $your_remote_git_repository git push origin master:mastergb常用命令
在上面的項目開發中,我們用到了兩個命令 gb build 和 gb vendor ,實際上, build 是我們之前所說的可執行文件 $GOPATH/bin/gb 包含的,而vendor是gb的一個插件,最終調用的是可執行文件 $GOPATH/bin/gb-vendor 。
可以通過 gb help 命令查看gb支持的更多命令,命令的具體用法可以通過 gb help $command_name 查看,很多gb命令都是在go命令行工具的基礎上做的包裝,用法也都相似,通過 gb vendor help 可以查看vendor插件具體用法,這里我們簡單列舉如下:
gb 命令列表
命令 | 功能 |
---|---|
build | 編譯包 |
doc | 顯示文檔 |
env | 打印項目的環境變量 |
generate | 處理源代碼生成Go文件 |
info | 顯示項目的信息 |
list | 顯示項目下的所有包 |
test | 執行測試 |
gb vendor 功能列表
參數 | 功能 |
---|---|
fetch | 獲取一個遠程依賴 |
update | 更新一個本地依賴 |
list | 每行一個列出所有依賴 |
delete | 刪除一個本地依賴 |
purge | 清除所有未引用的依賴 |
restore | 從manifest清單文件還原依賴 |
原文鏈接: http://tabalt.net/blog/golang-package-dependency-management-tool-gb/