3.3 Go语言从入门到精通:包管理工具之Govendor

Govendor是Go语言的一个依赖包管理工具,它解决了不同用户在克隆项目后依赖库版本不一致的问题。通过将依赖包放入工程的vendor目录,确保每个工程有自己的依赖版本。Govendor支持添加、更新和忽略依赖,还提供迁移功能,便于项目在不同环境间的移植。常用命令包括添加、更新和同步依赖。使用govendorinit初始化项目并在vendor目录下生成vendor.json文件,以记录依赖信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Govendor 是 Go 的另一个依赖包管理工具,它的出现可以避免不同用户在 clone 同一个工程后从外部获取不同依赖库版本的问题,很好的弥补了 GOPATH 包管理的缺陷。govendor 会将工程需要的依赖包添加到工程的 vendor 目录下,并且该目录中 vendor.json 文件会保存添加的依赖包的路径等信息。

(出于知识体系的完整性以及对各类包管理工具的全面了解,本文重点只是介绍Govendor 的存在,并不推荐使用它,仅作了解即可。)
1、Govendor 概述

Go 工程的依赖包经常使用 go get 命令来获取,例如:go get github.com/spf13/cobra/cobra ,会将依赖包下载到 GOPATH 的路径下。

随着 Go 的不断升级,在 Go 1.5版本之后,Go 提供了 GO15VENDOREXPERIMENT 环境变量(Go 1.6版本默认开启该环境变量)和 Govendor 包管理工具,用于将 go build 时的应用路径搜索调整成为当前工程/vendor 目录的方式,有效的解决了不同工程使用自己独立的依赖包目录。
1.1 Govendor介绍

Govendor 是 Go 1.5版本之后引入包管理工具。

其基本思路是,将引用的外部包的源代码放在当前工程的 vendor目录下面(类似于 Nodejs 的 node_modules 目录),Go 1.5 以后编译 Go 代码会优先从vendor目录先寻找依赖包,vendor目录如果没有找到,然后在 GOPATH 中查找,都没找到最后在 GOROOT 中查找。

特点:

可以采用 govendor add/update 从$GOPATH 复制现有的依赖。
如果要忽视 vendor/*/,可采用 govendor 同步恢复依赖。
可直接通过 govendor fetch 控制器添加新的依赖或者更新现有依赖。
可采用 govendor migrate 实现系统间迁移。
支持 Linux, OS X, Windows,甚至现有所有操作系统。
支持Git,Hg,SVN,BZR(必须指定一个路径)。

1.2 解决的问题

不同版本依赖问题:解决不同用户在 clone 同一个工程后从外部获取不同依赖库版本的问题。
迁移问题:将 Go 源码拷贝到当前工程的 vendor目录下,这样打包当前的工程代码到任意机器的 $GOPATH/src下都可以通过编译,避免项目代码外部依赖过多。迁移后, 无需再次 go get 拉取外部依赖包,况且再次 go get 重新拉取的外部依赖包的版本可能和工程开发时使用的不一致,将会导致编译错误问题。

1.3 常用命令

govendor 提供了很多命令供大家使用,下面列举了一些常用命令,更多命令可通过 govendor --help 查看。
在这里插入图片描述2、快速入门
2.1 安装

使用 go get命令快速安装:

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

建议将 $GOPATH/bin 加入到 PATH 中,方便直接使用 govendor 命令。

2.2 初始化

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

govendor init

更多请见:http://www.mark-to-win.com/tutorial/50510.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值