Glide Golang包管理

2023-05-26,,

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包管理的相关教程结束。

《Glide Golang包管理.doc》

下载本文的Word格式文档,以方便收藏与打印。