使用govendor管理golang项目依赖 - Go语言中文社区

使用govendor管理golang项目依赖


最近在项目开发过程中,遇到一个问题,当代码编写完成后,执行go run 时,提示如下错误:

大概意思就是我有golang.org/x/net/trace的两个副本,且提示了,可以通过vendor的副本解决。见鬼了,我哪来的golang.org/x/net/trace两个副本?仔细观察,才发现,我之前已经安装了golang.org/x/net/trace,然后项目开发使用了etcd,该源码目录下有个vendor子目录,里面包含了目录如下:

在网上查阅才知道,假设有如下场景:

你的工程引用了一些外部包,且这些包仍有更新的可能,或者你们项目组另外开发一些公用包,且还在并行开发迭代中,如果你的项目代码本来运行稳定,却因为外部包的更新导致运行出现问题,你是不是很郁闷?所以为了开发时或者部署时,将外部包版本确定,在go1.6之后引入vendor目录,即你的项目工程中,多了个vendor目录,执行go build的时候,会在vendor目录下边寻找你引用的外部包,这样每次编译的时候,当外部包修改,测试通过后,将新的外部包内容替换到vendor中,不断的迭代更新,保证了外部包的稳定,也不会影响到你当前的代码了。

我使用的工具是govendor,通过如下命令安装:

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

使用方法:

1.在项目目录下执行govendor init

2.govendor add +external或govendor add +e

这样,项目目录则多了个vendor目录,里面包含了项目引用的外部包了。

当然,这里的前提是,你的GOPATH本来就已经安装了这些外部包,govendor的工作只是将你项目中引用的外部包,从GOPATH拷贝到了你项目的vendor目录下。

govendor常用的命令如下:

init     创建 vendor 文件夹和 vendor.json 文件
list     列出已经存在的依赖包
add      从 $GOPATH 中添加依赖包,会加到 vendor.json
update   从 $GOPATH 升级依赖包
remove   从 vendor 文件夹删除依赖
status   列出本地丢失的、过期的和修改的package
fetch   从远端库增加新的,或者更新 vendor 文件中的依赖包

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/westhod/article/details/83543458
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-25 14:28:16
  • 阅读 ( 1080 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢