(最简单的包管理机制 go mod . 还有一种直接在项目里面mkdir vendor 文件夹,将需要的包都放进去即可)
介绍:
不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等, glide是Golang的包管理工具,是为了解决Golang依赖问题的。 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷:
能拉取源码的平台很有限,绝大多数依赖的是
github.com
不能区分版本,以至于令开发者以最后一项包名作为版本划分
依赖 列表/关系 无法持久化到本地,需要找出所有依赖包然后一个个
go get
只能依赖本地全局仓库(GOPATH/GOROOT),无法将库放置于局部仓库($PROJECT_HOME/vendor)
一,安装
采用ventor特性,go1.5版本需要指定 GO15VENDOREXPERIMENT=1 环境变量表示启用,
Go1.6版本表示默认启用,Go1.7版本移除该环境变量。
Glide的优点:
持久化依赖列表至配置文件中,包括依赖版本(支持范围限定)以及私人仓库等
持久化关系树至lock 文件中(类似于yarn 和 cargo),以重复拉取相同版本依赖 兼容 go get 所支持的版本控制系统:Git,Bzr, HG, and SVN 支持 GO15VENDOREXPERIMENT 特性,使得不同项目可以依赖相同项目的不同版本。 可以导入其他工具配置, 例如:Godep, GPM, Gom, and GB。
#go get github.com/Masterminds/glide
#go install github.com/Masterminds/glide
#glide //可以看到glided的信息
二,使用
#cd $GOPATH/src/vsr-admin
#glide init
:初始化项目需要的包生成glide.yaml文件,打开它可以更改自己需要的版本
#glide install :从github.com拉取需要的包。
如果需要添加新包,更新新包,下载指定的包可以通过更改glide.yaml文件实现,
因为#glide install
:下载包前是先读取glide.yaml文件(也会读取glide.lock文件,因为是首次insatll所以此文件还未生成,执行install时会提醒未找到该文件),再执行insatll读到的包以及项目依赖的基本的包。此时会生成glide.lock文件,里面记录了所有下载的包的信息。同时生成一一个ventor的文件夹,里面是下载的依赖包。
#go build :编译项目
三,其它操作
添加并下载依赖 glide get
除了自动从代码中解析 import 外,glide 还可以通过 glide get 直接下载代码中没有的依赖,与 go get 的用法基本一致:
例如:
glide get github.com/orcaman/concurrent-map
glide还有其它功能,在这就暂时不介绍了。
四,遇到的问题
解决办法:
在glide.yaml 文件中添加 -package: golang.org/x/sys//去github上下载基础包
再执行glide install 或者glide up //下载更新包,glide install 也有更新的功能。
解决办法:
更该glide.yaml文件中要下载包的版本,可以去github上寻找自己需要的版本
再执行glide install (先把已经下载好的删了,以免报错重复)。
3,执行glide install 报错,提醒已经有东西存在
解决办法:
尝试删除glide.yaml和glide.lock文件,重新初始化项目。因为glide
install 会先读取已经存在的glide.yaml和glide.lock文件。