原文地址:http://www.cnblogs.com/52php/p/6489605.html
侵删
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包。类似 Java 的 Maven,PHP 的 Composer.
- $GOPATH/src/myProject (Your project)
|
|-- glide.yaml
|
|-- glide.lock
|
|-- main.go (Your main go code can live here)
|
|-- mySubpackage (You can create your own subpackages, too)
| |
| |-- foo.go
|
|-- vendor
|-- github.com
|
|-- Masterminds
|
|-- ... etc.
# 下载源码包(目前版本:0.12.3)
go get github.com/Masterminds/glide
# 进入目录
cd github.com/Masterminds/glide
# 编译
# 注意,如果是离线安装的话,需要执行 go install
make build
go build -o glide -ldflags "-X main.version=v0.11.0" glide.go
Glide 能检测项目的依赖包 并且 创建一个名为 glide.yaml 的文件。能自动识别 Godep, GPM, Gom, and GB 等工具的配置文件。在 项目的 根目录 执行如下命令:
glide init // 会产生 glide.yaml
运行 glide init 命令的时候,会询问你是否需要以向导的方式提示及配置依赖包的版本,每步操作都需要你的确认。
执行如下命令,依据配置文件 glide.yaml 的内容,计算各个依赖包的精确版本号:
glide up
“up”是“update”的简写。这个命令会根据 glide.yaml 文件计算所需依赖包,并递归计算依赖包所需依赖包,并且确认各个依赖包的版本号。最后把这些信息写到一个名为 glide.lock 的文件中。
Glide 会把所有依赖包放到项目根目录的 vendor/ 目录下。如果某个依赖包有自己的 vendor/ 目录,默认情况下,Glide 不会删除它。go 工具链会使用它们的嵌套版本。如果想移除它们,使用 up 或 install 命令时,再加一个 --strip-vendor 或 -v 标签。
如果想下载所需依赖包,执行如下命令:
glide install
这个命令会做以下 2 件事:
(1) 如果 glide.lock 文件已经存在,Glide 会把 glide.lock 中已经计算好的确定版本号的依赖包批量下载到 vendor/ 目录下;
(2) 如果 glide.local 文件不存在,则会先执行 update 命令;
使用 get 命令,Glide 能帮你添加更多的依赖包到 glide.yaml 文件中,如下所示:
glide get github.com/Masterminds/semver
glide get 命令功能 类似 go get,但是它会把依赖包下载到 vendor/ 目录,并且把相关信息配置到 glide.yaml 文件。
这个 get 命令 也可以带版本号,如下所示:
glide get github.com/Masterminds/semver#~1.2.0
“#”是依赖包 和 版本号的分隔符,版本号可以是 语义版本,范围版本,分支版本,标签 或 提交的版本ID。
如果没有指定 具体版本号 或 范围版本号, Glide 会使用 语义版本号,并且提示要求你确认所需要的版本号
注意:
glide 会把下载下来的包缓存到 ~/.glide/cache 目录下 。
Glide 支持 语义版本,范围版本,分支版本,标签版本,版本ID 最为版本号。
举个简单例子,范围版本 > 1.2.3,表示 Glide 会用 大于 1.2.3 以后的最新版本。目前支持如下操作符:
字符 “x”、“X”、"*" 可以当做通配符,它可以应用于所有的比较操作中。当应用于“=”操作符中,它表示补丁最低级别的比较,如下所示:
波浪线比较操作符主要用于补丁级别范围比较,当为次要版本数字没指定时,次要版本不变,主版本修改。如下所示:
脱字符比较操作符是 为主版本号修改服务的。通常用于接口 主版本比较,如下所示:
文件 glide.yaml 包含了 当前包(项目)及依赖包 的相关信息,以下示例罗列了该文件的主要元素:
package: github.com/Masterminds/glide
homepage: https://masterminds.github.io/glide
license: MIT
owners:
- name: Matt Butcher
email: [email protected]
homepage: http://technosophos.com
- name: Matt Farina
email: [email protected]
homepage: https://www.mattfarina.com
ignore:
- appengine
excludeDirs:
- node_modules
import:
- package: gopkg.in/yaml.v2
- package: github.com/Masterminds/vcs
version: ^1.2.0
repo: [email protected]:Masterminds/vcs
vcs: git
- package: github.com/codegangsta/cli
version: f89effe81c1ece9c5b0fda359ebd9cf65f169a51
- package: github.com/Masterminds/semver
version: ^1.0.0
testImport:
- package: github.com/arschles/assert
有以下元素: