本文无关(Go1.11后推荐使用Go mod管理包依赖,不建议再使用vendor和GOPATH)
Go的vendor目录有什么用?
和 GOPATH 、 GOROOT 一样,用来查找包依赖,工程会优先使用vendor目录下的包。优先级:
vendor > 更上级目录的vendor > GOPATH/src > GOROOT/src
当多个工程用到不同版本的同一个包时,会有冲突,vendor目录用于管理当前工程用到的依赖包的版本,避免和其它工程冲突
使用govendor插件管理包依赖
安装govendor
go get -u github.com/kardianos/govendor
注意:安装后govendor可执行文件将生成在第一个GOPATH/bin目录下
初始化
cd [your dir]
govendor init
将在your dir目录下生成vendor目录和vendor/vendor.json文件
你可以配置vendor.json文件,比如编辑“ignore”字段来忽略掉某些目录下的包(这些包将不会加到vendor目录下),例如
{
"comment": "",
"ignore": "test github.com/xxx/",
"package": [],
"rootPath": "github.com/fenfenbingo/bingosession"
}
这里将test包和github.com/xxx/目录下的所有包忽略。注意,如果改成"github.com/xxx"则只有"github.com/xxx"包被忽略。
从GOPATH添加依赖包到vendor目录
govendor add +e
然后发现vendor.json文件里多了依赖包的信息,vendor目录下多了依赖包。
将依赖同步给其它项目人员
我们这里只提交vendor.json文件,在.gitignore文件添加
/vendor/*
!/vendor/vendor.json
其它项目人员拉取vendor.json文件后
govendor sync
如此会从远程仓库拉取vendor.json中记录对应版本的依赖库文件
更多命令请参考govendor官方文档
网友评论