使用govendor灵活管理Go程序中的依赖包
業(yè)務(wù)痛點(diǎn)
使用Go開發(fā)程序的過程中,為了方便開發(fā),往往會(huì)引用很多標(biāo)準(zhǔn)庫(kù)或者第三方的依賴包,第三方依賴包往往比標(biāo)準(zhǔn)庫(kù)功能更全面更強(qiáng)大更接地氣,那么如何管理眾多的第三方依賴包呢?如何更新其版本?在不需要時(shí),如何刪除掉呢?如果有工具能幫助解決這個(gè)問題就好了,好在Go中前輩們其實(shí)早就想到了這個(gè)痛點(diǎn),有個(gè)第三方的庫(kù)govendor就能完美解決這些問題,讓我們更舒心地使用依賴庫(kù),只需要很少的幾行命令就能搞定這些。
?
安裝
只需要下面的一行命令,就能將govendor安裝到$GOPATH的bin目錄下面
go get -u -v github.com/kardianos/govendor
?
如果命令行找不到該命令,需要將$GOPATH/bin加入PATH變量中去。在Linux上,可以編輯~/.bashrc文件,在Mac上煤科院編輯~/.bash_profile文件,以我目前Mac開發(fā)機(jī)為例,我的$GOPATH為/Users/tao/go,我只需在前面的文件中加入
vim ~/.bash_profile
添加下面的一行
export PATH=/Users/tao/go/bin:$PATH
使用下面的命令使之生效
source ~/.bash_profile
查看是否生效
echo $PATH
?
然后在命令行執(zhí)行g(shù)ovendor -h就能看到govendor命令可以靈活使用了。
?
govendor的最大的好處
Go從1.5版本之后,就默認(rèn)優(yōu)先使用vendor子目錄中的依賴庫(kù),而不是$GOPATH/src中的依賴包,這樣我們可以把工程源碼到處復(fù)制,使用時(shí)直接go build就可以了,不需要考慮一大堆第三方依賴包的管理問題。
?
使用govendor管理第三方依賴包
現(xiàn)在進(jìn)入你的Go工程目錄下面,依次執(zhí)行下面的命令,假設(shè)我現(xiàn)在的項(xiàng)目工程名為clairvoyance:
初始化vendor目錄
govendor init
此時(shí)會(huì)在當(dāng)前工程目錄(頂層)下面生成一個(gè)子目錄vendor,里面有個(gè)文件vendor.json記錄了一些模板信息。
?
govendor add +external
它會(huì)將你之前單獨(dú)安裝到$GOPATH/src目錄下的所有依賴包都復(fù)制到本項(xiàng)目的vendor下面,并且在vendor.json列出詳細(xì)的清單。如果$GOPATH/src目錄下面沒有依賴包,會(huì)解析當(dāng)前項(xiàng)目中的go文件來將所有的依賴庫(kù)先go get下來,存放到vendor下面。
?
查看你的工程中的第三方包列表
govendor list
?
簡(jiǎn)要列出各依賴包列表,實(shí)操發(fā)現(xiàn),這個(gè)命令比下面的govendor list -v fmt命令顯示的包更全面一些。
?
格式化查看
govendor list -v fmt
可以更詳細(xì)地查看各種包的依賴關(guān)系,但是有些包未顯示出來。
添加或更新包到本地vendor目錄
govendor fetch
?
?
?
實(shí)操驗(yàn)證
后來再新增一個(gè)第三方依賴包
govendor fetch github.com/ClickHouse/clickhouse-go
發(fā)現(xiàn)vendor子目錄下面的vendor.json中的確新增了clickhouse的相關(guān)信息,這說明新增依賴包管理已經(jīng)成功了。
實(shí)例操作二
原來使用的第三方接口是v2版本,現(xiàn)在更新為v3版本,相應(yīng)的接口庫(kù)都有全新改變,如何操作呢?
在當(dāng)前項(xiàng)目頂層目錄下面,執(zhí)行下面的命令
govendor update github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606
將從$GOPATH/src/github.com下面復(fù)制指定的新接口庫(kù),復(fù)制到當(dāng)前項(xiàng)目的vendor目錄中,并看到vendor.json的內(nèi)容已經(jīng)修改了。原來的舊版本接口庫(kù)還保留在vendor目錄中,你可以指定刪除掉它,我這里暫且先保留。還有下面的庫(kù)
govendor update -tree 'github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common'
-tree選項(xiàng)表示將下面的文件和子目錄一并都復(fù)制進(jìn)來,這個(gè)選項(xiàng)務(wù)必要選。
?
總結(jié)
以上是生活随笔為你收集整理的使用govendor灵活管理Go程序中的依赖包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Mac上设置环境变量并永久生效的方法
- 下一篇: 安装vim-go插件之后遇到的gopls