Golang包依賴管理工具gb

原文連接:http://tabalt.net/blog/golang...git

一個Golang項目工程一般由binpkgsrc三個子目錄構成,gb在這個概念的基礎上新增了一個vendor目錄來存放項目依賴的第三方包;一個gb項目的工做目錄裏包含該項目須要的全部Go代碼。github

gb項目不放在你的$GOPATH中,也不須要爲你的gb項目設置或修改$GOPATH。依賴的第三包須要放到vendor/src目錄中,並使用gb來編譯和測試你的項目。golang

安裝gb

gb的官網是:http://getgb.io/,github地址是:https://github.com/constabulary/gb/vim

使用以下命令便可安裝gb:bash

go get github.com/constabulary/gb/...

安裝gb後,會有gbgb-vendor兩個可執行文件放入你的$GOPATH/bin目錄中,查看或編輯你的~/.bash_profile文件,確保你的$GOPATH/bin目錄已經加入$PATH中:curl

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)
    }
}

添加依賴的第三包fetch

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 buildgb 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...

相關文章
相關標籤/搜索