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 一样

在上面中,比较重要常用的是 importignoreexcludeDirs 这三个。下面详细说一下。

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包管理的更多相关文章

  1. Golang包管理工具glide简介

    Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...

  2. Golang 包管理机制

    Golang 包管理机制 1. 历史 在go1.11之前, 并没有官方的包管理机制(Godep算个半官方), 主流的包管理机制有: GoVendor Glide Godep 在go1.11之后, 官方 ...

  3. Golang 包管理简介

    Golang 包管理 在一个项目里,如果想引用本地包,经常会把新手搞的莫名其妙.这里通俗记录一下. 首先先要知道几个默认的规则 必须定义环境变量GOPATH,GOPATH可以定义多个目录 所有项目代码 ...

  4. golang包管理工具

    软件开发中,不可避免的会使用到第三方库,因此包管理工具可以极大的方便开发者管理第三方依赖,避免掉入"依赖地狱". 作为google强大背书的golang语言,golang官方包管理 ...

  5. window下golang包管理glide使用说明

    golang是一门简洁高效的开发 语言,但是包管理一直是一个痛点,如图 : 很多开源项目特别是github.com中的大量应用golang.org和google.golang.org中的源码,且由于被 ...

  6. golang包管理的取巧

    常见的golang的包管理工具 glide 使用yaml做配置,语义化版本管理,可以设置镜像,下载x系列库,但是x系列库被第三方库依赖时会出现下载失败. dep 亲儿子,语义化版本管理,无法解决墙 v ...

  7. golang包管理工具及环境管理工具;如何下载外网的依赖包

    简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...

  8. golang包管理的古往今来

    https://golang.org/ before GO1.5-GOPATH 在GO1.5之前用GOPATH以及GOROOT这两个环境变量来决定包的位置. GOROOT就是告知当前go的安装位置,编 ...

  9. golang包管理解决之道——go modules初探

    golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案. 不过现在go modules随着golang1.11的发布而 ...

随机推荐

  1. ReactJS表单handleChange

    handleInputChange = (event) => { const target = event.target; const type = target.type; const val ...

  2. 6_1 持久化模型与再次加载_探讨(1)_三种持久化模型加载方式以及import_meta_graph方式加载持久化模型会存在的变量管理命名混淆的问题

    笔者提交到gitHub上的问题描述地址是:https://github.com/tensorflow/tensorflow/issues/20140 三种持久化模型加载方式的一个小结论 加载持久化模型 ...

  3. Python-Image 基本的图像处理操作

    Python-Image 基本的图像处理操作,有需要的朋友可以参考下. Python 里面最常用的图像操作库是 Image library(PIL),功能上,虽然还不能跟Matlab比较,但是还是比较 ...

  4. sql server单个字段列转行由,隔开

    SELECT STUFF((SELECT ','+字段名 FROM 表名 for xml path('')),1,1,'')

  5. 要提高SQL查询效率where语句条件的先后次序应如何写

    我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句 ...

  6. 转:oracle:win7手工卸载oracle数据库11g

    环境:oracle 11g,win7,64bit 问题:oracle不正常安装.重新安装等情况需要卸载软件,然而oracle11g取消了界面卸载,改为deinstall.bat文件执行卸载.具体关于d ...

  7. linux下jira搭建&破解(转自:https://www.cnblogs.com/zpw-1/p/9553358.html)

    写在前面 网络类似文章不少,但是同样的路,别人走可能一马平川,自己走可能磕磕绊绊.记录一下自己搭建过程的一路踩坑历程[目前还记得的]. 一.环境准备 1,jira7.3的运行是依赖java环境的,也就 ...

  8. Mitigate XSS attacks

    JavaScriptEncode //使用“\”对特殊字符进行转义,除数字字母之外,小于127使用16进制“\xHH”的方式进行编码,大于用unicode(非常严格模式). var JavaScrip ...

  9. Linux stat命令详解

    stat:查看文件或者文件系统的状态  -->可以查看时间等属性 stat常见命令参数 Usage: stat [OPTION]... FILE... Display file or file ...

  10. Linux 下shell 编程学习脚手架

    linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...