vendor 常用命令

vendor 常用命令

安装vendor

go get -u -v github.com/kardianos/govendor

进入到go项目的目录下

命令格式

govendor COMMAND

初始化vendor目录

govendor init

命令列表

命令 功能
init 初始化 vendor 目录
list 列出所有的依赖包
add 添加包到 vendor 目录,如 govendor add +external 添加所有外部包
add PKG_PATH 添加指定的依赖包到 vendor 目录
update 从 $GOPATH 更新依赖包到 vendor 目录
remove 从 vendor 管理中删除依赖
status 列出所有缺失、过期和修改过的包
fetch 添加或更新包到本地 vendor 目录
sync 本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本
get 类似 go get 目录,拉取依赖包到 vendor 目录

status依赖包状态说明:

状态 简写 含义 是否需要解决措施
+local l 此包已经在当前的工程中,或已经交给vendor管理了 no
+external e 依赖包在gopath了,并不在vendor里 govendor add +e 或者 govendor add 依赖包
+std s 依赖包存在于标准库里 no
+excluded x external packages explicitly excluded from vendoring no
+unused u packages in the vendor folder, but unused govendor remove unused
+program p package is a main package no
+outside +external +missing
+all +all packages

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表示。
在使用时,你也可以对这些状态进行逻辑组合,例如:

  1. +local,grogram表示既满足+local又满足+program。
  2. +local +vendor表示只要满足两者之一。
  3. +vendor,program +std表示vendor和program是与的关系,整体和std是或的关系
  4. +vendor,^program表示满足vendor,但却不满足program。

举例

首次添加所有外部文件

govendor add +external

删除没用的外部文件

govendor remove unused

再次添加外部文件

govendor add code.byted.org/gopkg/mosaic

更新外部文件

govendor update code.byted.org/gopkg/mosaic/…

添加使用过的外部文件

govendor add +e

常见错误

  1. 服务器提示某个依赖包没有找到
    原因可能是vendor文件中没有该包或者vendor.json文件中没有该包的描述信息。假设"github.com/astaxie/beego/logs"包的信息在vendor.json文件中没有找到,则在go命令行中执行govendor add github.com/astaxie/beego/logs。
  1. Error: GetFileAttributesEx E:\Program\go\bin\src: The system cannot find the file specified.
    执行govendor init命令,或者govendor list命令时,报以下错误:
    vendor 常用命令_第1张图片
    image

    解决措施:\t
    vendor 常用命令_第2张图片
    创建src目录

你可能感兴趣的:(vendor 常用命令)