Glide Golang包管理
Golang的包管理乱得不行,各种工具横空出世,各显神通啊。用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单。
初始化
一个已有的工程想要引入glide进行管理
→ glide create
这时,Glide会扫描工程中所有的文件并分析出依赖关系,然后提供选项是跟踪 Minor 还是跟踪 Patch 等选项。最后,Glide 会生成一个基础的配置文件 glide.yaml 。
内容在我的测试工程中,如下:
package: reposkeeper.net/awesomeTestProject
import:
- package: golang.org/x/net
- package: google.golang.org/grpc
version: ^1.9.2
配置文件解析
Glide 使用 yaml 作为配置文件的格式。顶层的可配置的有下面几个选项:
- package 表示了 此工程在 GOPATH 的位置
- homepage 表示了 此工程的详情页面
- license 表示了 工程采用的 license
- owners 表示了 项目的所有者,可以填多人
- ignore 表示了 导入时,忽略的包(这个在实际使用中比较常用,用于忽略掉一些不符合包管理规则的包)
- excludeDirs 表示了 Glide 在扫描时忽略的目录
- import 表示了 依赖的包列表
- testImport 表示了 测试中的依赖包,其格式同 import 一样
在上面中,比较重要常用的是 import,ignore,excludeDirs 这三个。下面详细说一下。
import
import 表示了 要导入的包列表,示例的配置方法,看下面:
import:
- package: github.com/Masterminds/vcs
version: ^1.2.0
repo: git@github.com:Masterminds/vcs
vcs: git
- package: golang.org/x/net
subpackages:
- context
- package 表示要导入的包 的名称
- version 表示了包的版本,可以是 版本、版本范围、分支、tag、commit id
- repo 如果包名称不是一个仓库地址或者是属于私人仓库,Glide 会在这里将包取出
- vcs 表示了使用的vcs,如:git、hg、svn等
- os 可以指定过滤特定的 操作系统,内容和 GOOS 一样
- arch 可以指定过滤特定的 架构体系,内容和 GOARCH 一样
- subpackages 表示只导入一个仓库中被使用的包
完整配置示例
package: github.com/Masterminds/glide
homepage: https://masterminds.github.io/glide
license: MIT
owners:
- name: Matt Butcher
email: technosophos@gmail.com
homepage: http://technosophos.com
- name: Matt Farina
email: matt@mattfarina.com
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: git@github.com: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
常用操作
- glide get [package name] 将一个包下载到工程的vendor下,并写入配置文件中
- glide up 升级所有的包
- glide install 安装所有的依赖包
END
配置和操作都比较简单,在日常使用起来,总会遇到包被墙掉的问题。不过作为技术人员,科学上网是基础能力,配一个proxy就可以了。
作者和出处(reposkeeper) 授权分享 By CC BY-SA 4.0
关注微信公众号,获取新文章的推送!

Glide Golang包管理的更多相关文章
- Golang包管理工具glide简介
Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...
- Golang 包管理机制
Golang 包管理机制 1. 历史 在go1.11之前, 并没有官方的包管理机制(Godep算个半官方), 主流的包管理机制有: GoVendor Glide Godep 在go1.11之后, 官方 ...
- Golang 包管理简介
Golang 包管理 在一个项目里,如果想引用本地包,经常会把新手搞的莫名其妙.这里通俗记录一下. 首先先要知道几个默认的规则 必须定义环境变量GOPATH,GOPATH可以定义多个目录 所有项目代码 ...
- golang包管理工具
软件开发中,不可避免的会使用到第三方库,因此包管理工具可以极大的方便开发者管理第三方依赖,避免掉入"依赖地狱". 作为google强大背书的golang语言,golang官方包管理 ...
- window下golang包管理glide使用说明
golang是一门简洁高效的开发 语言,但是包管理一直是一个痛点,如图 : 很多开源项目特别是github.com中的大量应用golang.org和google.golang.org中的源码,且由于被 ...
- golang包管理的取巧
常见的golang的包管理工具 glide 使用yaml做配置,语义化版本管理,可以设置镜像,下载x系列库,但是x系列库被第三方库依赖时会出现下载失败. dep 亲儿子,语义化版本管理,无法解决墙 v ...
- golang包管理工具及环境管理工具;如何下载外网的依赖包
简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...
- golang包管理的古往今来
https://golang.org/ before GO1.5-GOPATH 在GO1.5之前用GOPATH以及GOROOT这两个环境变量来决定包的位置. GOROOT就是告知当前go的安装位置,编 ...
- golang包管理解决之道——go modules初探
golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案. 不过现在go modules随着golang1.11的发布而 ...
随机推荐
- redis 迭代命令SCAN、SSCAN、HSCAN、ZSCAN
SCAN 命令用于迭代当前数据库中的数据库键.SSCAN 命令用于迭代集合键中的元素.HSCAN 命令用于迭代哈希键中的键值对.ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值). S ...
- linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755
chown /bin/chownchown [用户] [文件或目录] 改变文件或目录的所有者只有root可以改变文件或目录的所有者 root用户:mkdir /tmptouch /tmp/test.f ...
- Oracle数据库通过DBLINK实现远程访问
什么是DBLINK? dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就 ...
- STL中set和map
set 可以认为是数学上的集合,集合中的元素不允许有重复.set特有的操作是高效的插入.删除和执行基本查找. set的插入方法是 insert,由于集合元素的唯一性,insert操作不一定会成功,in ...
- Bootstrap框架。
什么是 Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更 ...
- webpack HMR是如何工作的?
https://github.com/webpack/docs/wiki/hot-module-replacement-with-webpack https://www.jianshu.com/p/9 ...
- [翻译] VBFPopFlatButton
VBFPopFlatButton https://github.com/victorBaro/VBFPopFlatButton Flat button with 21 different states ...
- svn回退到具体的版本
svn回退到具体的版本 找到项目的版本号 命令行中输入相关命令 到指定地点找到项目即可
- java判断字符串内容
java判断字符串是否全为数字 String str = "032";boolean isNum = str.matches("[0-9]+"); java判断 ...
- 如何创建一个Quartz.NET的工作,需要注射autofac
问题: 使用 Quartz.Net 做定时任务时,实现IJob对象的服务,Autofac不会自动注入,使用构造函数会直接出现异常,无法执行Execute方法. 解决方式 方法一: 使用 Autofac ...
