golang 通过goroot, gopath对项目进行管理,goroot目录安装go语言包,gopath作为workspace放项目代码。同时将goroot, gopath加入系统的环境变量即可。golang在import依赖库的时候,是使用相对于gopath/src目录下的相对路径。当使用go get命令时,会扫描源代码里面的import语句,将相应的第三方引用下载到gopath/src下对应的目录里。
但是这样做存在以下问题:
1,每个项目的开发环境无法隔离。
2,不同项目如果引用第三方依赖,依赖库会下载到同一个gopath里面,如果不同项目引用了不同版本的依赖库,便会造成冲突。
然后vendor就诞生了,在go1.6之后就默认开启。
vendor的处理方式是:
将第三方依赖放入当前项目vendor目录中, 编译的时候从vendor目录中查找依赖而不从GOPATH/src中对应目录中查找。
新增的第三方包直接被get到根目录的vendor文件夹下,不会与其它的项目混用第三方包,完美避免多个项目同用同一个第三方包的不同版本问题。因此只需要对vendor/vendor.json进行版本控制,即可对第三包依赖关系进行控制。
那么如何使用呢
一.安装
go get -u github.com/kardianos/govendor
二.添加依赖,使用help命令查看帮助
- 进入到项目目录
- 使用
govendor init
命令初始化项目的依赖 - 运行
govendor fetch
命令增加依赖 - 打开
./vendor/vendor.json
查看依赖的包