Golang包管理工具之govendor

xiaohai 2019-09-24 18:48:45 1507人围观 标签: Go 
简介在使用Golang开发项目的过程中,我们会使用很多外部包,但是我们一般通过go get获取相应包后,都下载到了GOPATH对应的路径下。这样造成了我们不能将多个项目的依赖隔离开,其次就是多个人协同开发一个项目后,每个人下载的包有可能不一致,所以通过这种方式也可以得到解决。

为什么要使用govendor

  在使用Golang开发项目的过程中,我们会使用很多外部包,但是我们一般通过go get获取相应包后,都下载到了GOPATH对应的路径下。这样造成了我们不能将多个项目的依赖隔离开,其次就是多个人协同开发一个项目后,每个人下载的包有可能不一致,所以通过这种方式也可以得到解决。

govendor简介

  golang工程的依赖包经常使用go get命令来获取,例如:

go get github.com/kardianos/govendor

会将依赖包下载到GOPATH的路径下。

  常用的依赖包管理工具有godep,govendor等,在Golang1.5之后,Go提供了 GO15VENDOREXPERIMENT 环境变量(Go 1.6版本默认开启该环境变量),用于将go build时的应用路径搜索调整成为 当前项目目录/vendor 目录方式。通过这种形式,我们可以实现类似于 godep 方式的项目依赖管理。

govendor安装

Github地址:https://github.com/kardianos/govendor

go get -u github.com/kardianos/govendor

govendor使用

  • 1、初始化
    需要进入到项目目录,使用下面的命令进行初始化:
govendor init

会出现一个vendor文件夹,里面的vendor.json 文件用来记录依赖包的信息。

  • 2、添加本地已有的库(必须是存在的GOPATH中的库)
govendor add github.com/jinzhu/gorm
  • 3、移除
govendor remove github.com/jinzhu/gorm
  • 4、从远程拉取库(类似于go get)
govendor fetch github.com/jinzhu/gorm
  • 5、将GOPATH中本工程使用到的依赖包自动移动到vendor目录中(通过add直接获取的,可能相关依赖包是没有的,就需要执行该命令)
govendor add +external
  • 6、查看当前项目中的包
govendor list

注意:项目必须建立在GOPATH的src中,否则go找不到对应的项目,当我们使用govendor后,会自动找到该项目下的vendor目录去获取相应包。