一、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相关推荐

  1. Go (Golang) 工具之依赖包管理工具goimports | Go语言规范-import规范(导入)排序 |GoLand:设置gofmt与goimports,保存时自动格式化代码

    文章目录 Go (Golang) 工具之依赖包管理工具goimports Go语言规范-import(导入)排序 什么是goimports 安装和使用 Golang 使用goimports unrec ...

  2. 《Go语言圣经》学习笔记 第十章 包和工具

    <Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...

  3. Node.js学习之路--npm包管理工具操作汇总

    因为在学习使用Express(第三方Web开发框架)时需要下载这个包,所以使用npm包管理工具这个相关的操作,现在将其相关的操作进行汇总. npm命令在cmd或者powershell中进行;注意:使用 ...

  4. Cocoa依赖包管理工具

    Carthage iOS 作为目前最大的移动端开发平台,开发者的生态环境也是非常繁荣.在 iOS 早期时候,开发者想要使用第三方库就必须将其源代码引入工程,或者说是以 git submodule 的形 ...

  5. Golang 依赖包管理工具---glide

    安装glide $ go get github.com/Masterminds/glide $ go install github.com/Masterminds/glide 验证 $ glide N ...

  6. Go Modules依赖包管理与Go Modules实战

    目录 Go Modules依赖包管理 Go Modules 简介 Go 包管理的历史 Go1.5 版本前:GOPATH Go1.5 版本:Vendoring "百花齐放":多种 G ...

  7. Go 语言编程 — go mod 依赖包管理

    目录 文章目录 目录 go mod 依赖包管理 使用 go mod go mod 的子指令 go mod 依赖包管理 Golang 将 Modules(模块)定义为 "源代码交付和版本控制的 ...

  8. 正在或即将被使用的Go依赖包管理方法:Go Modules,Go 1.13的标准特性

    公众号原文地址:https://mp.weixin.qq.com/s/SGGV3tWEg5AAJ7I_FcK0cg 目录 目录 说明 初始化 依赖包的默认导入 依赖包的特定版本导入 查看已添加依赖 依 ...

  9. golang中的包管理工具——govendor和godep简单学习

    为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...

最新文章

  1. 这个逆袭的新同事,也太牛逼了
  2. 信息系统项目管理师优秀论文:项目风险管理
  3. 会导致所有者权益减少的项目是_第二章:会计要素的确认(11)所有者权益
  4. sudo apt-get install libstdc++6
  5. 小白都能看懂的缓存入门
  6. 苏宁回应“股权质押”:正常商业合作
  7. echarts scatter
  8. left join嵌套selelct语句格式_SQL Formatting Rule 格式化行业规范
  9. 企业数据可视化的优势
  10. java 获取上传文件后缀_java 文件上传相关知识及得到后缀名
  11. Web Client Software Factory系列(1):初识与预备知识
  12. 奔小康赚大钱 HDU - 2255(最大权值匹配 KM板题)
  13. thinkpad x60安装WINDOWS2003SERVER
  14. 做web网站开发的流程、步骤
  15. AGV激光Slam导航环境要求说明
  16. 批量给多个 Excel 工作薄文件中插入新的工作表 Sheet
  17. 闭区间连续函数的性质
  18. iOS之UITableView的使用——多分区表格以及分区索引
  19. 计算机硬件的五个功能部件及其功能
  20. mysql 截断多个表_如何从MySQL数据库中截断所有表?

热门文章

  1. 根据IP地址获取物理位置
  2. PHP框架 - laravel
  3. jsp和Java后台数据如何交互
  4. 大一c语言考试选择题及答案,大一计算机基础期末考试试题「附答案」
  5. Visio安装 (无需卸载OFFICE)(解决安装冲突问题)
  6. ESXI如何封装网卡驱动
  7. RGB、多光谱、高光谱、全色图介绍
  8. 在webStrom中快速启动自己安装的浏览器(360极速浏览器为例)
  9. elment ui table 点击上下移动表格
  10. XML文件介绍,这也太简单了