#golang使用govendor教程

##环境

如果是go1.5,需要环境变量GO15VENDOREXPERIMENT=1,go1.6以上默认开启了这个功能

笔者版本为1.11,govendor版本为v1.0.9

##安装

建议把$GOPATH/bin加入到PATH中,方便使用govendor命令

go get -u github.com/kardianos/govendor

##应用

###初始化

进入项目根目录下执行以下命令,会在项目根目录下新建一个vendor目录,并在其中生成vendor.json(存储包的版本信息)

govendor init

###拉取包

根据已有的vendor.json从远程拉取包到vendor目录下,gopath目录下不会有拉下来的包 可以把现有的json文件copy过来哦!

govendor sync

从远程拉取包到vendor下并记录进vendor.json,gopath目录下不会有拉下来的包

govendor fetch [包链接,如:github.com/BurntSushi/toml]

等于go get 笔者使用的govendor版本下,govendor -h指令显示"govendor get"可以复制包到vendor目录下,实践中并没有

govendor get [包链接,如:github.com/BurntSushi/toml]

###添加包

添加包会同时在json文件中记录

把gopath下的包(只会是被项目引用到的包)添加到vendor目录下 必须vendor目录下没有,且vendor.json中没有记录这个包的时候才会添加,其中一个存在则命令无效亦不报错

govendor add +external(+e)

把项目中的包添加到vendor目录下 必须vendor目录下没有,且vendor.json中没有记录这个包的时候才会添加,其中一个存在则命令无效亦不报错

govendor add +local(+l)

把标准库的包添加到vendor目录下 必须vendor目录下没有,且vendor.json中没有记录这个包的时候才会添加,其中一个存在则命令无效亦不报错

govendor add +std(+s)

把主程序包(main包)添加到vendor目录下 必须vendor目录下没有,且vendor.json中没有记录这个包的时候才会添加,其中一个存在则命令无效亦不报错

govendor add +program(+p)

把指定包添加进vendor目录 vendor目录下已存在会报错,vendor.json存在该包记录不会报错会直接覆盖该记录

govendor add [包链接,如:github.com/BurntSushi/toml]

添加所有的包,包括gopath、go标准库、项目中的包 gopath和标准库下的包必须是被项目或者项目中引用到的包引用的才会添加

govendor add +all(+a)

###移除包

移除包的时候会把vendor目录和json文件的记录一起移除,只有vendor或者只有json中有仍然会移除而不提示

移除项目中的包

govendor remove +local(+l)

移除未被项目引用的包

govendor remove +unused(+u)

移除指定包

govendor remove [包链接,如:github.com/BurntSushi/toml]

移除vendor下所有的包

govendor remove +vendor(+v)

###其他操作

列出vendor下所有的包(不是根据json文件而是vendor文件夹)和项目中的包(本地包) vendor包标记为pv,本地包标记为pl

govendor list

列出引用该包的包 vendor包标记为pv,本地包标记为pl

govendor list -v [包链名,如:fmt、github.com/BurntSushi/toml]

##关于'+'后面的包类型的说明

状态

缩写状态

含义

+local

l

本地包,即项目自身的包组织

+external

e

外部包,即被 $GOPATH 管理,但不在 vendor 目录下

+vendor

v

已被 govendor 管理,即在 vendor 目录下

+std

s

标准库中的包

+unused

u

未使用的包,即包在 vendor 目录下,但项目并没有用到

+missing

m

代码引用了依赖包,但该包并没有找到

+program

p

主程序包,意味着可以编译为执行文件

+outside

o

外部包和缺失的包

+all

a

所有的包

##一些无法解决的问题

在移除操作的时候,有时候会出现"Error: Different Canonical Packages for ***(这里是包名)"的问题,笔者实践中出现的命令有"remove +a, remove +p",这时候json中的记录是移除了的,这时往往需要手动删除

在移除操作的时候,有时候会出现执行无效果的情况

linux go vendor目录,golang使用govendor教程相关推荐

  1. linux go vendor目录,Go 包依赖管理工具 —— govendor

    govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...

  2. go引入外部依赖的三种方式:go get,go module,vendor目录

    本文转载自golang 引入外部包的三种方式:go get, go module, vendor目录_guoguolifang的博客-CSDN博客_golang 外部包 import  "g ...

  3. linux各种挂载点作用,Linux 挂载点目录及其作用

    Linux 挂载点目录及其作用 Linux 挂载点目录及其作用 什么是挂载点? Linux 使用字母和数字的组合来指代磁盘分区 Linux 是一切皆文件,整个系统都是当做文件来管理,在Windows中 ...

  4. golang 引入外部包的三种方式:go get, go module, vendor目录

    import "github.com/astaxie/beego" 编译出错解决方案: go get:确保你的GOPATH是工程目录,代码在src目录下,然后在命令提示符中输入:g ...

  5. linux 切换目录技巧,Lnux入门教程:Linux目录切换技巧

    在Linux的多目录命令提示符中工作是一种痛苦的事情,但以下这些利用cd和pushd切换目录的技巧有助于你节省时间和精力. 在Linux命令提示中,用cd命令来改变当前目录.这是cd命令的一些基本用法 ...

  6. Golang 微服务教程

    本节对 gRPC 的使用浅尝辄止,更多可参考:gRPC 中 Client 与 Server 数据交互的 4 种模式 前言 系列概览 <Golang 微服务教程>分为 10 篇,总结微服务开 ...

  7. Golang微服务教程

    转自:https://segmentfault.com/a/1190000015135650?utm_campaign=studygolang.com&utm_medium=studygola ...

  8. YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程

    YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程 1. 直接删除 Golang 安装包: 如果是默认安装,Golang 的默认安装目录为: a. Linux.Mac O ...

  9. linux java的安装目录,linux java 安装目录

    linux java 安装目录 [2021-02-01 05:04:30]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  10. Linux下使用Speedtest测试网速教程

    Linux下使用Speedtest测试网速教程 文章目录: 一.通过Speedtest官网直接测试网络速度 二.通过下载源码,在命令行中测试网速 1.下载安装 2.Speedtest的参数使用: 有时 ...

最新文章

  1. 教你如何编写第一个爬虫
  2. JavaScript 设计模式之观察者模式与发布订阅模式
  3. FFmpeg 硬件加速方案概览 (上)
  4. Sublime Text 的下载巨慢的问题,安装问题,html页面代码生成问题,代码提示问题 全都解决了【最完美的解决方案】
  5. python打包加版本信息_使用pyi-set_version为PyInstaller打包出来的程序附加版本信息...
  6. odoo10 继承(扩展)、模块数据
  7. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】
  8. php 一个电子商城的产品分类字段_你会对这个字段做索引嘛,order by多个字段对索引的影响...
  9. Angular学习笔记(五) - 自定义表单控件
  10. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_01-自定义查询页面-服务端-Dao...
  11. docker tensorflow_用Docker容器方式安装TensorFlow
  12. linux 摄像头yuv,camera YUV格式
  13. 非常好用的自助建站程序整站源码 内置几十种站
  14. python正态性检验_在python中做正态性检验示例
  15. 快门光圈感光度口诀_曝光补偿怎么调,快门光圈感光度口诀,深度解析曝光补偿...
  16. 【问答】区块链遇到Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for
  17. 联合国发布2019年《世界人口展望》:人口老化加剧, 到本世纪末地球人口将达109亿...
  18. 在github搭建自己写的网页
  19. 团队管理的四大挑战——用人篇
  20. Open Inventor 10.11.1 Crack

热门文章

  1. java thrift使用指南_Thrift使用指南
  2. wtl单文档选项_WTL体系结构
  3. html css星号选择器,CSS里面的星号*
  4. 允许用户使用 MAK 密钥激活 Office 2010 批量许可版
  5. APP启动无视频数据-YYC松鼠短视频系统
  6. 四川眉山中院宣判两起特大跨国电信诈骗案
  7. JVM 语言的兴衰 【The Rise and Fall of JVM Languages】
  8. SX1308电压调节,踩坑
  9. UDE2021未来生活领袖峰会:视像行业发展趋势研究报告发布
  10. 人工智能区块链智能合约_通过业务规则使您的区块链智能合约更智能