一、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使用的更多相关文章

  1. go依赖包管理工具vendor基础

    go依赖包管理工具vendor基础 vendor是go的依赖包管理工具,主要用于管理项目中使用到的一些依赖. 它将项目依赖的包,特指外部包,复制到当前工程下的vendor目录下,这样go build的 ...

  2. php composer包管理工具

    一 . 包管理工具 你在Centos上装工具的时候直接yum -y install xx 比你去rpm -ivh xx.rpm 是不是爽很多呢? composer 就是安装php 代码的一个类似工具. ...

  3. Linux包管理工具分析

    转自:http://blog.csdn.net/carolzhang8406/article/details/14198219 在正式进入讨论之前,先贴几条非常有用的link: linux 发行版比较 ...

  4. linux--软件包管理工具

    linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...

  5. Go语言包管理工具dep

    什么是dep? dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具. 相比较go get而言,dep可以直接给引入的第三方包一个专 ...

  6. Golang包管理工具glide简介

    Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...

  7. golang包管理工具及环境管理工具;如何下载外网的依赖包

    简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...

  8. Go语言包管理工具Glide

      Go语言包管理工具用于管理Go项目的库和库的依赖引用. 包管理工具普遍会在Go项目根目录生成Vendor文件夹并自动下载该Go项目需要的库. Go语言有很多开源的包管理工具,这里主要介绍Glide ...

  9. go包管理工具glide使用方法

    golang没有官方最佳管理方案,在go的世界里存在大量的自制解决方案. go语言的包是没有中央库统一管理的,通过使用go get命令从远程代码库(github.com,goolge code 等)拉 ...

随机推荐

  1. Fiddler如何捕捉DefaultHttpClient的HTTP请求

    实际开发中为了解决Ajax跨域请求问题,会通过一个同域的控制器在服务端代理请求目标的Web API并将结果返回.为了便于调试这类请求,我们希望通过Fiddler可以监控到这些请求.Fiddler官方给 ...

  2. Windows下MySQL的绿化与精简

    MySQL本身就支持安装使用,本文只是对自己使用免安装版MySQL的经历记录下来,以便以后查看. 首先是获取Windows下的MySQL免安装版本,这个需要去到MySQL官网进行下载.我一般喜欢把首页 ...

  3. 使用Python往手机发送短信(基于twilio模块)

    官网是https://www.twilio.com twilio的一句话介绍——提供SDK帮你连接世界上所有人,你可以很方便的调用他们提供的接口来给指定手机发短信,打电话. 首先在twilio的官网注 ...

  4. bootstrap-switch 使用

    网址:http://www.bootcss.com/p/bootstrap-switch/ 界面设置不调用方法没成功,事件也不起作用不知道是jquery版本原因还是什么原因!,下面亲测试可以使用 $( ...

  5. Error creating bean with name 'eurekaAutoServiceRegistration'

    spring-boot项目不断重启,报错: org.springframework.beans.factory.BeanCreationNotAllowedException: Error creat ...

  6. C# 各类常见Exception 异常信息

    一直对报错有些迷惑的地方,什么时候try,catch那些Exception更合适,报错信息更能快速定位问题所在... 转载链接← 正文 Exception: 所有异常对象的基类. SystemExce ...

  7. eclipse安装Hadoop-0.20.2插件

    因为在使用Hadoop-0.20.2这个古董,需要使用它自带的eclipse插件,而我最初安装的是现代的eclipse4.10.0. 在经历两天,以及以下种种尝试之后,均以失败告终: 1.网上找适合的 ...

  8. Ubuntu下文件所属用户的说明

    最近做项目发现,当你使用sudo建立新的文件或者目录时,该文件的所有者是root用户,此种情况下,使用tensorflow加速就会报错,除非你把文件的权限改成777,但是这样不安全. 纠正的做法是,建 ...

  9. tensorflow的tile使用

    当你需要按照矩阵维度复制数据时候,可以使用tensorflow的tile函数 a1 = tf.tile(a, [2, 2]) 表示把a的第一个维度复制两次,第二个维度复制2次.注意使用tf.nn.so ...

  10. CentOS-6.9安装配置JDK-7

    CentOS-6.9安装配置JDK-7 安装说明 系统环境:centos-6.9安装方式:rpm安装 软件:jdk-7u79-linux-x64.rpm下载地址:http://download.ora ...