organizing golang projects and dependencies
背景
golang的依赖一直是让人头疼的问题, 大家对其自有的package管理也是褒贬不一
而对于一个公司内部项目来讲, 主要的需求有以下几点
- 方便的依赖包版本管理
- 方便协同开发
- 尽可能不依赖其编译所在环境
- 除基础包之外, 第三方包尽可能的自包含
基于此, 有了本文, 打算以最小的环境变更及工具, 打造一个可协同工作的golang projects
依赖工具
优势
- 不依赖默认GOPATH,只需设置GOPATH为当前目录及指定子目录即可。即项目无需放在默认$GOPATH下面
- 经测试支持go 1.5, go1.6, go1.7
- go 1.5需
unset GO15VENDOREXPERIMENT
或者设置GO15VENDOREXPERIMENT=1
- go 1.5需
- 不依赖GOROOT
- 当然使用
godef
等工具还是需要设置GOROOT的
- 当然使用
项目创建者
|
|
项目协同者
|
|
依赖已有的包
可能一些包你已经下载过了,例如golang.org/x/ 下的一系列包,不想再辛苦重新下载,可以使用glide mirrors
,然后再glide install
即可
|
|
锁定依赖包的版本
当执行glide up
时,glide的思路是更新你项目的所有依赖到最新版本。这个结果往往不是我们想要的,生产环境中往往只是依赖一个稳定的版本。
glide-pin 是一个glide的插件,提供了从lock文件转换成yaml文件的功能。
可以利用这个工具,生成具有具体版本的glide.yaml文件,就能达到锁定依赖包版本的目的。
-EOF-