go包管理govendor

简介

  • 该工具将项目依赖的外部包拷贝到项目下的 vendor 目录下,并通过 vendor.json 文件来记录依赖包的版本,方便用户使用相对稳定的依赖。
  • govendor只是用来管理项目的依赖包,如果GOPATH中本身没有项目的依赖包,则需要通过go get先下载到GOPATH中,再通过govendor add +external拷贝到vendor目录中。Go 1.6以上版本默认开启GO15VENDOREXPERIMENT环境变量。

使用

安装

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

初始化

进入项目根目录下执行以下命令,会在项目根目录下新建一个vendor目录,并在其中生成vendor.json(存储包的版本信息)

govendor init

拉取包

根据已有的vendor.json从远程拉取包到vendor目录下
govendor sync
从远程拉取包到vendor下并记录进vendor.json(不会在 $GOPATH 也存一份)
govendor fetch [包链接,如:github.com/BurntSushi/toml]
与 go get 类似,将包下载到 $GOPATH,再将依赖包复制到 vendor 目录
govendor get [包链接,如:github.com/BurntSushi/toml]

添加包

把gopath下的包(只会是被项目引用到的包)添加到vendor目录下
govendor add +external(+e)
把项目中的包(本地包,即项目内部编写的包)添加到vendor目录下 
govendor add +local(+l)
把标准库的包添加到vendor目录下 
govendor add +std(+s)
把主程序包(主程序包,即可被编译为执行文件的包)添加到vendor目录下 
govendor add +program(+p)
把指定包添加进vendor目录 vendor目录下
govendor add [包链接,如:github.com/BurntSushi/toml]
添加所有的包,包括gopath、go标准库、项目中的包 gopath和标准库下的包
govendor add +all(+a)

移除包

移除项目中的包
govendor remove +local(+l)
移除未被项目引用的包
govendor remove +unused(+u)
移除指定包
govendor remove [包链接,如:github.com/BurntSushi/toml]
移除vendor下所有的包
govendor remove +vendor(+v)

列出包

列出vendor下所有的包(不是根据json文件而是vendor文件夹)和项目中的包(本地包) vendor包标记为pv,本地包标记为pl
govendor list
列出引用该包的包
govendor list -v [包链名,如:fmt、github.com/BurntSushi/toml]

实例

#进入到项目目录
cd /home/gopath/src/mytool

#初始化vendor目录,这个项目要在GOPATH路径下可以用临时环境变量加入GOPATH
#例如:export GOPATH="$GOPATH:/share/grpc_protobuf/go"
#而且需要在src目录下,可以自己新建一个src
govendor init

#查看vendor目录
[root@CC54425A mytool]# ls
commands  main.go  vendor  mytool_test.sh

#将GOPATH中本工程使用到的依赖包自动移动到vendor目录中
#说明:如果本地GOPATH没有依赖包,先go get相应的依赖包
govendor add +external
或使用缩写: govendor add +e 

#Go 1.6以上版本默认开启 GO15VENDOREXPERIMENT 环境变量,可忽略该步骤。
#通过设置环境变量 GO15VENDOREXPERIMENT=1 使用vendor文件夹构建文件。
#可以选择 export GO15VENDOREXPERIMENT=1 或 GO15VENDOREXPERIMENT=1 go build 执行编译
export GO15VENDOREXPERIMENT=1

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×