一、前言
godep 是解决包依赖的管理工具,也是目前最主流的一种 golang 项目包管理工具
kubernetes 等主流项目都在使用,相比直接 vendor 方式, godep 在其基础上增加了版本控制的概念
二、安装
官方项目 github 地址:https://github.com/tools/godep
安装比较简单,直接执行:
# go get -u -v github.com/tools/godep
安装完成后, 在 $GOPATH/bin 目录
下会有一个 godep 可执行的二进制文件,建议加入全局环境变量
三、使用
3.1 拉取依赖到 $GOPATH
# godep restore
当你下载下来一个项目,它是通过 godep 进行包管理的,就执行 godep restore 拉取依赖代码!
godep restore 执行时,godep会按照 Godeps/Godeps.json
内列表信息,
依次执行 go get -d -v
来下载对应依赖包到 $GOPATH 路径下 ;
如果某个原先的依赖包保存路径($GOPATH 下的相对路径)与下载 url 路径不一致,
比如 kuberbetes 在 github 上路径是 github.com/kubernetes,
而代码内 import 则是 k8s.io,则会导致无法下载成功,也就是说 godep restore 不成功。
这种只能手动,比如手动创建 $GOPATH/k8s.io 目录,然后 git clone
3.2 保存依赖到本地项目
# godep save
godep save 执行时,会自动扫描当前目录所属包中 import 的所有外部依赖库(非系统库),
将所有的依赖库复制到当前工程中,产生 Godeps\Godeps.json 文件,
同时生成模组依赖目录 vendor 文件夹;
当你创建完项目,一切就绪,想使用 godep 进行包管理的时候,就执行 godep save 初始化!
3.3 编译项目
目前,golang(1.6 及以后版本) 已经默认支持从 vendor 目录查找依赖,
因此一般直接执行 go build 即可正常编译
如果编译失败,可以使用 godep go build 方式编译