接触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中,欢迎大家访问
有疑问加站长微信联系(非本文作者)