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 等)拉 ...
随机推荐
- IOS多线程处理
http://www.jianshu.com/p/0b0d9b1f1f19 首页专题下载手机应用 显示模式登录 注册登录 添加关注 作者 伯恩的遗产2015.07.29 00:37* 写了35 ...
- mui+回复弹出软键盘
最近再做一个APP的时候,有一个评论回复的功能,在做APP的时候,直接用手指触发focus事件,来唤醒软键盘的弹出没有问题, 但是现在的功能需要对点击回复进行弹出软键盘来操作,参考过很多都有问题,后来 ...
- day_5.14 py 飞机大战Demo
飞机未完,继续做 2018-5-14 21:05:45 明天继续 循环里面的坑; 删除列表元素后循环了打印的不一样,主要是比如相邻的删除了,33,44 删除33 循环一次后44跑到33位置 ...
- MSDN2001 快捷方式丢失的处理方法
1. C:\Windows\hh.exe,右键 - 发送快捷方式到桌面 2. 给快捷方式改名为:MSDN2001 3. 右键快捷方式 - 属性- 快捷方式选项卡中的目标填写: C:\Windows\ ...
- Python中StringIO和BytesIO
介绍一下Python在内存中读写数据,用到的模块是StringIO和BytesIO StringIO >>> from io import StringIO >>> ...
- ztree 文件夹类型的 树状图
未套程序的源代码: 链接:http://pan.baidu.com/s/1nuHbxhf 密码:4aw2 已套程序的源代码: css样式: /*发布邮件 选择领导弹窗*/ .xuandao{ disp ...
- Windows的文件类型关联
在用脚本语言开发时尤其是在windows环境下发现想自动在命令行环境下运行脚本必须要带着相应的解释器的路径才行,不然就会提示无法找到对应的命令,于是乎在<学习Ruby>这本书中对于文件类型 ...
- WPF .NET 4.0 OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)) BUG解决
在项目 App.xaml 文件下 => Application 节点=> 添加 DispatcherUnhandledException="Application_Dispa ...
- ASP.NET异步
1.ASP.NET线程模型 在WEB程序中,天生就是多线程的,我们知道,一个WEB服务可以同时服务器多个用户,我们可以想象一下,WEB程序应该运行于多线程环境中,对于运行WEB程序的线程,我们可以称之 ...
- AD 16 下绘图的几个技巧
1.绘制封装如果引脚过多怎么办,使用阵列粘贴功能 首先建立一个焊盘,然后选中,使用 ctrl + c 复制,注意复制确认的时候,鼠标一定要点击到焊盘中间. 选择阵列粘贴 条款就是你要复制多少个,增量就 ...