Go包管理工具Vendor使用
一、Go包管理工具Vendor
一、使用步骤
1、首先,从go get -u github.com/kardianos/govendor下载govendor工具到本地。
2、govendor使用时,必须保证你的工程项目放在GOPATH/src目录下。
3、在Go命令行执行govendor init,自动生成vendor文件夹(存放你项目需要的依赖包)和vendor.json文件(有关依赖包的描述文件)。
4、这时你查看vendor.json文件时,可能还没有什么内容。此时你需要将GOPATH文件夹中的包添加到vendor目录下,只需执行命令govendor add +external或者govendor add +e。
5、此时看到的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"
}
二、其他常用命令
1、govendor list可以快速查看你项目中的外部依赖包。例如:
v github.com/astaxie/beego
v github.com/astaxie/beego/cache
v github.com/astaxie/beego/cache/redis
v github.com/astaxie/beego/config
v github.com/astaxie/beego/context
v github.com/astaxie/beego/context/param
v github.com/astaxie/beego/grace
l benben-project/router
l benben-project/config
l benben-project/controllers
l benben-project/log
l 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使用的更多相关文章
- go依赖包管理工具vendor基础
go依赖包管理工具vendor基础 vendor是go的依赖包管理工具,主要用于管理项目中使用到的一些依赖. 它将项目依赖的包,特指外部包,复制到当前工程下的vendor目录下,这样go build的 ...
- php composer包管理工具
一 . 包管理工具 你在Centos上装工具的时候直接yum -y install xx 比你去rpm -ivh xx.rpm 是不是爽很多呢? composer 就是安装php 代码的一个类似工具. ...
- Linux包管理工具分析
转自:http://blog.csdn.net/carolzhang8406/article/details/14198219 在正式进入讨论之前,先贴几条非常有用的link: linux 发行版比较 ...
- linux--软件包管理工具
linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...
- Go语言包管理工具dep
什么是dep? dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具. 相比较go get而言,dep可以直接给引入的第三方包一个专 ...
- Golang包管理工具glide简介
Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...
- golang包管理工具及环境管理工具;如何下载外网的依赖包
简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...
- Go语言包管理工具Glide
Go语言包管理工具用于管理Go项目的库和库的依赖引用. 包管理工具普遍会在Go项目根目录生成Vendor文件夹并自动下载该Go项目需要的库. Go语言有很多开源的包管理工具,这里主要介绍Glide ...
- go包管理工具glide使用方法
golang没有官方最佳管理方案,在go的世界里存在大量的自制解决方案. go语言的包是没有中央库统一管理的,通过使用go get命令从远程代码库(github.com,goolge code 等)拉 ...
随机推荐
- 正则表达式中,[\s\S]* 什么意思
https://blog.csdn.net/haoyuedangkong_fei/article/details/53781936 例如:[a-z]表示从a到z之间的任意一个. 不是这样的吗?谁能给我 ...
- PHP计算两个经纬度地点之间的距离
/** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距 ...
- 夺冠概率|2012年蓝桥杯B组题解析第九题-fishers
(17')夺冠概率 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能. 假设有甲.乙.丙.丁四个球队.根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表: 甲 乙 丙 丁 甲 - 0. ...
- db2 表空间扩容
DB2表空间扩容 1 - Detect what tablespace has size issues db2 list tablespaces show detail 2 - Check the p ...
- java整形数据和浮点型数据
在定义数据的时候,如果有不是整形的数据(单精度,双精度之类的),那么运算的时候要在其所在式子里的数据后面加上.0,否则会出现(1/2=0.1.0/2=0.5)的现象,比如如下代码 public cla ...
- Codeforces 670E - Correct Bracket Sequence Editor - [线段树]
题目链接:https://codeforces.com/contest/670/problem/E 题意: 给出一个已经匹配的括号串,给出起始的光标位置(光标总是指向某个括号). 有如下操作: 1.往 ...
- Vue.js最佳实践
Vue.js最佳实践 第一招:化繁为简的Watchers 场景还原: created(){ this.fetchPostList() }, watch: { searchInputValue(){ t ...
- 【每日一题】 UVA - 11809 Floating-Point Numbers 阅读题+取对数处理爆double
https://cn.vjudge.net/problem/UVA-11809 题意:很长orz 题解:算一下输入范围,发现用double是读不进来的,在这里wa了半天,(double 1e300 ...
- ubuntu下c/c++/python/go编译运行
C语言: .c文件 编译器gcc//my_code下hello.c文件 $sudo apt install gcc $gcc hello.c -o hello $./hello C++: .cpp文件 ...
- python3写入csv文件时中文为乱码
今天修改李万的爬虫时把页面上的中文写入csv文件时,中文总是乱码.通过上网搜索得到解决.解决的办法是打开文件是需加参数 encoding='utf-8-sig' .感谢博客园的菜鸟Alex.他相关博客 ...