Go语言的包管理

u014029783 · · 5020 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

接触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中,欢迎大家访问


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:u014029783

查看原文:Go语言的包管理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5020 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传