Go包管理工具Vendor使用教程
使用步骤
- 首先,从
go get -u github.com/kardianos/govendor
下载govendor
工具到本地。 - govendor使用时,必须保证你的工程项目放在
GOPATH/src
目录下。 - 在Go命令行执行
govendor init
,自动生成vendor
文件夹(存放你项目需要的依赖包)和vendor.json
文件(有关依赖包的描述文件)。 - 这时你查看
vendor.json
文件时,可能还没有什么内容。此时你需要将GOPATH文件夹中的包添加到vendor目录下,只需执行命令govendor add +external
或者govendor add +e
。 - 此时看到的
vendor.json
文件就比之前多了许多,例如:
{"comment": "","ignore": "test","package": [{"checksumSHA1": "T6YlZ5PORNIwutJP7Vfe29XKQno=","path": "github.com/astaxie/beego","revision": "d96289a81bf67728cff7a19b067aaecc65a62ec6","revisionTime": "2017-07-18T16:56:48Z"},{"checksumSHA1": "vvdzuefaGsQVMbcON/s0oqjrRkU=","path": "github.com/astaxie/beego/cache","revision": "d96289a81bf67728cff7a19b067aaecc65a62ec6","revisionTime": "2017-07-18T16:56:48Z"},{"checksumSHA1": "OFioicOCBXIM8IJ5W9SE0EOWmSA=","path": "github.com/astaxie/beego/session/redis","revision": "d96289a81bf67728cff7a19b067aaecc65a62ec6","revisionTime": "2017-07-18T16:56:48Z"},{"checksumSHA1": "B6+D5EMUhOmo6I5wIVoTwNfcsV8=","path": "github.com/astaxie/beego/toolbox","revision": "d96289a81bf67728cff7a19b067aaecc65a62ec6","revisionTime": "2017-07-18T16:56:48Z"},{"checksumSHA1": "wyz5HgdoDurteHhp63m+CwKx7zg=","path": "github.com/astaxie/beego/utils","revision": "d96289a81bf67728cff7a19b067aaecc65a62ec6","revisionTime": "2017-07-18T16:56:48Z"}],"rootPath": "benben-project"
}
其他常用命令
govendor list
可以快速查看你项目中的外部依赖包。例如:
v github.com/astaxie/beegov github.com/astaxie/beego/cachev github.com/astaxie/beego/cache/redisv github.com/astaxie/beego/configv github.com/astaxie/beego/contextv github.com/astaxie/beego/context/paramv github.com/astaxie/beego/gracel benben-project/routerl benben-project/configl benben-project/controllersl benben-project/logl benben-project/models
其中最左边的是描述包的状态,右边是你工程的依赖包
2. govendor add
添加依赖包到vendor目录下,在使用 govendor add命令时,后面需要跟上下面介绍的一些状态,也可以直接跟上缺失包的地址,如下文常见错误中的做法。
3. govendor update
从你的GOPAHT中更新你工程的依赖包
4. govendor remove
从你工程下的vendor文件中移除对应的包
5. govendor fetch
添加或者更新vendor文件夹中的包
govendor使用状态来指定包
+local (l) 表示工程中的包
+external (e) 从GOPATH中引用的包,但不包含在你的当前工程中
+vendor (v) vendor文件夹中的包
+std (s) Go标准库中的包
+excluded (x) 从vendor文件中排除的外部依赖包
+unused (u) vendor文件中存在但却未使用的包
+missing (m) 项目引用但却为发现的包
+program (p) main包中包
其中有一些状态存在简写,例如:+std
可以用+s
表示,+external
可以用+ext
或者+e
表示,+external
可以用+exc
或者+x
表示。
在使用时,你也可以对这些状态进行逻辑组合,例如:
+local,grogram
表示既满足+local
又满足+program
。+local +vendor
表示只要满足两者之一。+vendor,program +std
表示vendor
和program
是与的关系,整体和std是或的关系+vendor,^program
表示满足vendor
,但却不满足program
。
常见错误
1. 服务器提示某个依赖包没有找到
原因可能是vendor文件中没有该包或者vendor.json
文件中没有该包的描述信息。假设"github.com/astaxie/beego/logs"
包的信息在vendor.json
文件中没有找到,则在go命令行中执行govendor add github.com/astaxie/beego/logs
。
Go包管理工具Vendor使用教程相关推荐
- python各种包安装顺序_史上最全的Python包管理工具:Anaconda教程
事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境. 简单来说,Anaconda是包管理器和环境管理器,Jupyter notebook 可以将数据分析的代码.图像和 ...
- 包管理工具conda极简教程
包管理工具conda极简教程 conda的作用 Anaconda是目前非常流行的一个python包管理器,自带很多流行的python库,包括numpy,pandas等,当然还有conda.而Conda ...
- Go:包管理工具GOPATH、vendor、dep 、go module
目录 Go包管理工具:前言 GOPATH vendor.dep Go modules Module 文件 go mod命令 Go modules使用步骤: go module的文件下载后位置: Go包 ...
- Python 包管理工具解惑
本文转载自http://zengrong.net/post/2169.htm,感谢原作者. 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...
- Golang包管理工具之govendor的使用
本文个人博客地址为:http://www.huweihuang.com/article/golang/govendor-usage/ 本文个人博客地址为:https://huweihuang.net/ ...
- dep指定版本 go_Go 包管理工具-dep
dep 是一个 golang 依赖管理工具,需要在 Go 1.7 及更高的版本中使用. 1. 安装 安装 dep 工具的方式有很多种,如果是 mac 电脑的话,只需要如下命令: brew instal ...
- Golang包管理工具(三)之dep的使用
本文个人博客地址:http://www.huweihuang.com/article/golang/dep-usage/ 更多golang包管理工具参考 - dep的使用 - glide的使用 - g ...
- golang中的包管理工具——govendor和godep简单学习
为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...
- 小白都能看懂的go语言包管理工具DEP详解
简介 众所周知GO语言包管理工具百花齐放,前有godep.glide.govendor,后有dep. 今天我们来了解一下"dep",看看它是怎样实现包管理的. dep安装 二进制文 ...
最新文章
- 【C语言】宏offsetof的模拟实现 (计算结构体中某变量相对于首地址的偏移)
- 用上AI后,银行每年竟然能多赚1万亿美元丨麦肯锡最新调查报告
- iOS开发-NSString去掉所有换行及空格
- C语言优先级——取反和移位
- 关键词提取_NLP 关键词 提取 实战 案例
- Mapper 接口无法注入或Invalid bound statement (not found)
- Oracle 发布基于 VS Code 的开发者工具,轻松连接 Oracle 数据库
- 前端学习(3015):vue+element今日头条管理--自定义验证规则
- JeecgBoot单体升级微服务之二
- PHP中三元运算符的用法_php 三元运算符实例详细介绍
- TCP TIME_WAIT详解
- 睡眠监测微信小程序源码
- [Zer0pts2020]ROR1
- Excel之vlookup函数的模糊匹配和精准匹配
- 【软考】软件设计师知识点整理(待更新)
- [Anaconda学习]本地查看代理ip,anaconda挂代理
- 使用学信网认证,免费获取JetBrains学习产品
- 三大常用个人邮箱 163 Gmail QQMail之用户体验分析
- 为什么转置一个512x512的矩阵,会比513x513的矩阵慢很多?
- Linux下录屏软件obs安装
热门文章
- 用scratch2.0编写乒乓球游戏
- React `controlled` 及 `uncontrolled` 组件
- 统计物理中积分计算和态密度计算要点
- Excel文件减肥和加速
- windows部署tensorflow serving
- mysql 事务一直running_事务一直running?记录一次事务异常导致的下单阻塞
- PERL 连接FTP实现文件上传下载
- Homekit智能通断器
- 【typescript】infer的理解与使用
- ubuntu18.04 eclipse +sdcc开发stm8l152 并且单步调试