Golang包依賴管理工具gb

hippowc 8年前發布 | 32K 次閱讀 Go語言 Git Google Go/Golang開發

原文鏈接: 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 main

import ( "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:master

gb常用命令

在上面的項目開發中,我們用到了兩個命令 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/

來自: http://segmentfault.com/a/1190000004346513

 本文由用戶 hippowc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!