业务痛点
使用Go开发程序的过程中,为了方便开发,往往会引用很多标准库或者第三方的依赖包,第三方依赖包往往比标准库功能更全面更强大更接地气,那么如何管理众多的第三方依赖包呢?如何更新其版本?在不需要时,如何删除掉呢?如果有工具能帮助解决这个问题就好了,好在Go中前辈们其实早就想到了这个痛点,有个第三方的库govendor就能完美解决这些问题,让我们更舒心地使用依赖库,只需要很少的几行命令就能搞定这些。
安装
只需要下面的一行命令,就能将govendor安装到$GOPATH的bin目录下面
go get -u -v github.com/kardianos/govendor
如果命令行找不到该命令,需要将$GOPATH/bin加入PATH变量中去。在Linux上,可以编辑~/.bashrc文件,在Mac上煤科院编辑~/.bash_profile文件,以我目前Mac开发机为例,我的$GOPATH为/Users/tao/go,我只需在前面的文件中加入
vim ~/.bash_profile
添加下面的一行
export PATH=/Users/tao/go/bin:$PATH
使用下面的命令使之生效
source ~/.bash_profile
查看是否生效
echo $PATH
然后在命令行执行govendor -h就能看到govendor命令可以灵活使用了。
govendor的最大的好处
Go从1.5版本之后,就默认优先使用vendor子目录中的依赖库,而不是$GOPATH/src中的依赖包,这样我们可以把工程源码到处复制,使用时直接go build就可以了,不需要考虑一大堆第三方依赖包的管理问题。
使用govendor管理第三方依赖包
现在进入你的Go工程目录下面,依次执行下面的命令,假设我现在的项目工程名为clairvoyance:
初始化vendor目录
govendor init
此时会在当前工程目录(顶层)下面生成一个子目录vendor,里面有个文件vendor.json记录了一些模板信息。
govendor add +external
它会将你之前单独安装到$GOPATH/src目录下的所有依赖包都复制到本项目的vendor下面,并且在vendor.json列出详细的清单。如果$GOPATH/src目录下面没有依赖包,会解析当前项目中的go文件来将所有的依赖库先go get下来,存放到vendor下面。
查看你的工程中的第三方包列表
govendor list
简要列出各依赖包列表,实操发现,这个命令比下面的govendor list -v fmt命令显示的包更全面一些。
格式化查看
govendor list -v fmt
可以更详细地查看各种包的依赖关系,但是有些包未显示出来。
添加或更新包到本地vendor目录
govendor fetch
实操验证
后来再新增一个第三方依赖包
govendor fetch github.com/ClickHouse/clickhouse-go
发现vendor子目录下面的vendor.json中的确新增了clickhouse的相关信息,这说明新增依赖包管理已经成功了。
实例操作二
原来使用的第三方接口是v2版本,现在更新为v3版本,相应的接口库都有全新改变,如何操作呢?
在当前项目顶层目录下面,执行下面的命令
govendor update github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606
将从$GOPATH/src/github.com下面复制指定的新接口库,复制到当前项目的vendor目录中,并看到vendor.json的内容已经修改了。原来的旧版本接口库还保留在vendor目录中,你可以指定删除掉它,我这里暂且先保留。还有下面的库
govendor update -tree 'github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common'
-tree选项表示将下面的文件和子目录一并都复制进来,这个选项务必要选。
天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生。从获得微信应用号邀请的业内人士发出来的一张开发工具源码截图可以看到,reacjs及其相应的FLUX框架altjs很有可能会成为前端开发主流。作为行业内人士,自己之前从来没有做过web及webapp开发,所以这方面算是一名小白。这段时间在忙完工作之余准备储备...
习题5 2. (1)写出关系模式: 学生:R1= U1={学号,姓名,出生日期,系名,班号,宿舍区}; F1={学号->(姓名,出生日期,系名,班号,宿舍区),班号->系名,系名->宿舍区}; 班级:R2= U2={班号,专业名,系名,人数,入校年份}; F2={班号->(专业名,人数,入校年份),专业名->系名,(专业名,入校年份)...
选择-去掉“列选择模式”前面的✔ ...
下面是在Ubuntu 14.04 64bit上面的实操记录:...
原地址:http://blog.csdn.net/alking_sun/article/details/36175187 1.安卓层开发并暴露接口。 launcher activity(以下称为UnityActivity)最好要继承com.unity3d.player.UnityPlayerActivityUnityActivit...
lansweeper安装及使用指南 一、 软件介绍 Lansweeper是一款可以实现对WINDOWS网络里面的计算机软件、硬件以及与资产管理相关的信息收集,功能有点类似于微软的SMS(现在最新版本叫做SCOM 2007),与微软产品有所不同的是,它是免费的,占用资源少,并且不内嵌任何广告。 同时无需安装客户端,所有信息收集完全依...