Golang学习笔记之依赖包管理工具gvt
一、gvt概念
gvt全称为Go vendoring tool,可译为Go供应工具,或者意译为Go依赖包依赖包工具,whatever~~,简单来说就是可以方便的获取、更新、删除项目所依赖的工具包,这个特性在Go1.5之前并不支持,1.5版本中需要设置GO15VENDOREXPERIMENT=1才可以使用,1.6之后默认加入vendor属性,运行时Go会自动先在vendor目录下寻找依赖, 找不到才会在GOPATH路径下寻找依赖。这个gvt工具类似于Java里的maven,可以非常便捷的对项目依赖包进行管理,大大简化依赖包管理操作。
二、gvt的安装与使用
安装:一条命令即可
go get -u github.com/FiloSottile/gvt
使用:
前面已经提到过,gvt工具会把项目依赖的包fetch到项目vendor文件夹下,那么gvt怎么zi'd知道需要哪些依赖呢?使用gvt时会在vendor文件夹下生成一个manifest文件,这个文件里的内容即为依赖包的地址,格式如下:
{"version": 0,"dependencies": [{"importpath": "github.com/PuerkitoBio/goquery","repository": "https://github.com/PuerkitoBio/goquery","revision": "2e29ea41f0d13f4a303c75553f4eeadddc7a4c56","branch": "master"},{"importpath": "golang.org/x/text/runes","repository": "https://github.com/golang/text","revision": "dafb3384ad25363d928a9e97ce4ad3a2f0667e34","branch": "master","path": "/runes"},{"importpath": "golang.org/x/text/transform","repository": "https://github.com/golang/text","revision": "dafb3384ad25363d928a9e97ce4ad3a2f0667e34","branch": "master","path": "/transform"}]
}
其中importpath指明了包的路径,repository指明了包所在的仓库,revision指明的包的ban'版本,branch为具体的分支。这个manifest文件其实就类似于maven里的pom.xml文件,熟悉Java的朋友一看便知。
1)基本命令:
gvt command [arguments]
command有以下几个:
fetch //获取一个远程依赖
restore //从manifest中恢复依赖
update //更新一个本地依赖
list //以行为单位列出所有依赖
delete //删除一个本地依赖
2)获取一个远程依赖
gvt fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] [-t|-a] importpath
a)由于分支的获取时递归进行的,因此若一个子路径下的包已经存在,则子包会被删除以防止chu'出现冲突,例如若本地已经存在一个包example.com/a/b,则当 example.com/a被fetch时,原来的子包会被删除。
b)path也可以是一个url,以此解决私有仓库不能huo获取依赖的问题
c)参数详解
-t//获取also_tes.go文件和测试数据
-a//获取所有文件和子文件夹,但是.git, .hg and .bzr会被忽略
-branch branch//获取名为branch的分支。gvt update命令也会使用到,若不提供该参数,使用默认分支
-no-recurse//非递归获取依赖
-tag tag//获取指定标签的依赖
-revision rev//从分支或仓库中获取指定版本的依赖,默认拉取最新版本的依赖包
-precaire//允许使用不安全的协议
3)从manifest恢复依赖
gvt restore [-precaire] [-connections N]
参数:
-precaire//允许使用不安全的协议
-connections//指定可以并行下载的数量
4)更新一个本地依赖
gvt update [ -all | importpath ]
将会拉取最新数据,并且只有通过branch, 以及没有使用 -tag 或者-revision时才能才能进行更新
如果要通过分支进行更新,或者从一个tag/revision更新到另一个,则需要先delete依赖后再进行更新
参数:
-all//更新manifest里的所有依赖
-precaire//允许使用不安全的协议
5)以行的方式列出依赖
gvt list [-f format]
参数:
-f//控制打印每个manifest实体的模板格式,若没有该参数,则默认打印格式为 "{{.Importpath}}\t{{.Repository}}{{.Path}}\t{{.Branch}}\t{{.Revision}}"
6)删除一个本地依赖
gvt delete [-all] importpath
该命令从vendor文件夹和manifest文件中移除一个依赖
参数:
-all//删除所有依赖
以上就是gvt的简单使用jie'介绍,希望benefit you~~
三、参考资料
[1].https://github.com/FiloSottile/gvt
[2].https://godoc.org/github.com/FiloSottile/gvt
Golang学习笔记之依赖包管理工具gvt相关推荐
- Go (Golang) 工具之依赖包管理工具goimports | Go语言规范-import规范(导入)排序 |GoLand:设置gofmt与goimports,保存时自动格式化代码
文章目录 Go (Golang) 工具之依赖包管理工具goimports Go语言规范-import(导入)排序 什么是goimports 安装和使用 Golang 使用goimports unrec ...
- 《Go语言圣经》学习笔记 第十章 包和工具
<Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...
- Node.js学习之路--npm包管理工具操作汇总
因为在学习使用Express(第三方Web开发框架)时需要下载这个包,所以使用npm包管理工具这个相关的操作,现在将其相关的操作进行汇总. npm命令在cmd或者powershell中进行;注意:使用 ...
- Cocoa依赖包管理工具
Carthage iOS 作为目前最大的移动端开发平台,开发者的生态环境也是非常繁荣.在 iOS 早期时候,开发者想要使用第三方库就必须将其源代码引入工程,或者说是以 git submodule 的形 ...
- Golang 依赖包管理工具---glide
安装glide $ go get github.com/Masterminds/glide $ go install github.com/Masterminds/glide 验证 $ glide N ...
- Go Modules依赖包管理与Go Modules实战
目录 Go Modules依赖包管理 Go Modules 简介 Go 包管理的历史 Go1.5 版本前:GOPATH Go1.5 版本:Vendoring "百花齐放":多种 G ...
- Go 语言编程 — go mod 依赖包管理
目录 文章目录 目录 go mod 依赖包管理 使用 go mod go mod 的子指令 go mod 依赖包管理 Golang 将 Modules(模块)定义为 "源代码交付和版本控制的 ...
- 正在或即将被使用的Go依赖包管理方法:Go Modules,Go 1.13的标准特性
公众号原文地址:https://mp.weixin.qq.com/s/SGGV3tWEg5AAJ7I_FcK0cg 目录 目录 说明 初始化 依赖包的默认导入 依赖包的特定版本导入 查看已添加依赖 依 ...
- golang中的包管理工具——govendor和godep简单学习
为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...
最新文章
- 这个逆袭的新同事,也太牛逼了
- 信息系统项目管理师优秀论文:项目风险管理
- 会导致所有者权益减少的项目是_第二章:会计要素的确认(11)所有者权益
- sudo apt-get install libstdc++6
- 小白都能看懂的缓存入门
- 苏宁回应“股权质押”:正常商业合作
- echarts scatter
- left join嵌套selelct语句格式_SQL Formatting Rule 格式化行业规范
- 企业数据可视化的优势
- java 获取上传文件后缀_java 文件上传相关知识及得到后缀名
- Web Client Software Factory系列(1):初识与预备知识
- 奔小康赚大钱 HDU - 2255(最大权值匹配 KM板题)
- thinkpad x60安装WINDOWS2003SERVER
- 做web网站开发的流程、步骤
- AGV激光Slam导航环境要求说明
- 批量给多个 Excel 工作薄文件中插入新的工作表 Sheet
- 闭区间连续函数的性质
- iOS之UITableView的使用——多分区表格以及分区索引
- 计算机硬件的五个功能部件及其功能
- mysql 截断多个表_如何从MySQL数据库中截断所有表?