Golang包依赖管理工具gb

原文链接:http://tabalt.net/blog/golang...

一个Golang项目工程通常由binpkgsrc三个子目录构成,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后,会有gbgb-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)
    }
}

添加依赖的第三包

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


类型转换 1、int转string 2、string转int 3、string转float 4、用户结构类型转换
package main import s "strings" import "fmt" var p = fmt.Println func main() { p("Contains: ", s.Contains("test&quo
类使用:实现一个people中有一个sayhi的方法调用功能,代码如下: 接口使用:实现上面功能,代码如下:
html代码: beego代码:
1、读取文件信息: 2、读取文件夹下的所有文件: 3、写入文件信息 4、删除文件,成功返回true,失败返回false
配置环境:Windows7+推荐IDE:LiteIDEGO下载地址:http://www.golangtc.com/downloadBeego开发文档地址:http://beego.me/docs/intro/ 安装步骤: 一、GO环境安装 二、配置系统变量 三、Beego安装 一、GO环境安装 根
golang获取程序运行路径:
Golang的文档和社区资源:为什么它可以帮助开发人员快速上手?
Golang:AI 开发者的实用工具
Golang的标准库:为什么它可以大幅度提高开发效率?
Golang的部署和运维:如何将应用程序部署到生产环境中?
高性能AI开发:Golang的优势所在
本篇文章和大家了解一下go语言开发优雅得关闭协程的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1.简介本文将介绍首先为什么需要主...
这篇文章主要介绍了Go关闭goroutine协程的方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1.简介本文将介绍首先为什么需要主动关闭gor...
本篇文章和大家了解一下go关闭GracefulShutdown服务的几种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录Shutdown方法Regi...
这篇文章主要介绍了Go语言如何实现LRU算法的核心思想和实现过程,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。GO实现Redis的LRU例子常
今天小编给大家分享的是Go简单实现多租户数据库隔离的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会...
这篇“Linux系统中怎么安装NSQ的Go语言客户端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希
本文小编为大家详细介绍“怎么在Go语言中实现锁机制”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在Go语言中实现锁机制”文章能帮助大家解决疑惑,下面...
今天小编给大家分享一下Go语言中interface类型怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考