前言
在用Go做项目的时候,难免会使用到第三方库;我们使用go get 下载第三方库都是在$GOPATH/src下,如果我们有多个项目,对于第三方库有不同版本要求,这样就存在问题,管理起来很混乱,所以我们需要一个包管理工具。
下载
go get -u -v github.com/kardianos/govendor
快速使用
# 初始化vendor目录
cd "my project in GOPATH"
govendor init
# 将项目用到GOPATH依赖包添加到vendor
govendor add +external
# 列出并筛选现有的依赖项和包
govendor list
# 查看那些包使用了该包
govendor list -v fmt
# 获取特定版本或修订
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55
govendor fetch golang.org/x/net/context@v1 # Get latest v1.*.* tag or branch.
govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named "v1".
# 在给定任何先前版本约束的情况下,将包更新为最新版本
govendor fetch golang.org/x/net/context
# 仅格式化存储库
govendor fmt +local
# 仅在存储库中构建所有内容
govendor install +local
# 仅测试存储库
govendor test +local
子命令
init 创建"vendor"文件夹和"vendor.json"文件.
list 列出并筛选现有的依赖项和包
add 添加$GOPATH中包到"vendor"文件夹.
update 更新"vendor"文件夹中包来自$GOPATH.
remove 从"vendor"文件夹中移除包.
status 列出本地丢失、过期或修改的任何包.
fetch 添加或更新"vendor"文件夹下的包来自远程仓库.
sync 基于"vendor.json"文件,从远程仓库拉去带有修订版本的包到"vendor"文件夹中.
get 类似"go get"但复制依赖文件"vendor"文件夹中.
license 列出给定状态或导入路径的已发现许可证.
状态
命令 | 缩写 | 含义 |
+local | l | 本地包,即项目自身的包组织 |
+external | e | 外部包,即被$GOPATH管理,但不在"vendor"目录下 |
+vendor | v | 被govendor管理,即在“vendor”文件夹中的包 |
+std | s | 标准库中的包 |
+unused | u | 未使用的包,即包在"vendor"目录下,但项目没有使用 |
+missing | m | 项目引用包,但该包没有找到 |
+program | p | 主程序包,意味着可以编译执行的包 |
+outside | 外部包和缺失包 | |
+all | 所有包 |