文档章节

Glide Golang包管理

o
 osc_z1hvg4cu
发布于 2018/04/24 21:34
字数 745
阅读 4
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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 Creative Commons License

关注微信公众号,获取新文章的推送!
qrcode

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
golang 中的包管理

声明:本文仅限于简书发布,其他第三方网站均为盗版,原文地址: golang 中的包管理 对于习惯了 Java 和 Python 的程序员来说,对于包的管理都有着比较大的期望,当然,虽然 Java 和 Python...

yetship
2017/11/06
0
0
golang进阶(一)——glide的使用手册

+++ title=”golang进阶(一)——glide的使用手册” date=”2017-10-10” tags=[“golang”,”glide”,”docker”] categories=[“资源管理”] description=”golang也有包管理,类似maven...

lastsweetop
2017/10/09
0
0
《Golang 疑问解答二》Golang依赖管理工具:glide的使用

一、介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。...

IT--小哥
2019/03/20
0
0
Golang依赖管理工具:glide从入门到精通使用

这是一个创建于 2017-07-22 05:33:09 的文章,其中的信息可能已经有所发展或是发生改变。 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradl...

osc_ngi4bcdo
2018/06/08
10
0
go包管理工具-glide使用方法及踩坑记录

前言 大学以来一直想做一个OJ,终于可以开始,而且是用新学的Go来写,心里还是挺兴奋的。 项目启动,要搭架子,第一件事,当然是选择一个包管理工具。Go的包管理还是挺混乱的,没有一个能像J...

to_be_better
2017/10/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试必问之mysql基础

mysql存储引擎 如何选择mysql存储引擎 先得了解下各个存储引擎区别 功能 MylSAM MEMORY InnoDB Archive 功能 MylSAM MEMORY InnoDB Archive 存储限制 256TB RAM 64TB None 支持事务 No No Ye...

lipengxs
2分钟前
0
0
错误:将标头发送到客户端后无法设置标头 - Error: Can't set headers after they are sent to the client

问题: I'm fairly new to Node.js and I am having some issues. 我对Node.js相当陌生,遇到了一些问题。 I am using Node.js 4.10 and Express 2.4.3. 我正在使用Node.js 4.10和Express 2......

法国红酒甜
13分钟前
18
0
Spring中事务不生效的几种情况

数据库引擎不支持事务。 没有被Spring管理。 方法不是public的。 自身调用问题。 数据源没有配置事务管理器。 不支持事务。 异常被吃了。 异常类型错误。 事务失效类型: 数据库引擎不支持事...

九分石人
32分钟前
31
0
从Linux内核理解JAVA的NIO

前言 IO 可以简单分为磁盘 IO 和 网络 IO ,磁盘 IO 相对于网络 IO 速度会快一点,本文主要介绍 磁盘 IO ,网络 IO 下周写。 JAVA 对 NIO 抽象为 Channel , Channel 又可以分为 FileChannel ...

万古云霄
38分钟前
22
0
Material Design用在c#的wpf app中

官网:http://materialdesigninxaml.net/ 样式丰富 做网站和手机不粗 个人觉得不适合用在.net framework中,在.net core中应该大有作为。...

齐勇cn
39分钟前
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部