使用govendor灵活管理Go程序中的依赖包
業務痛點
使用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選項表示將下面的文件和子目錄一并都復制進來,這個選項務必要選。
?
總結
以上是生活随笔為你收集整理的使用govendor灵活管理Go程序中的依赖包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Mac上设置环境变量并永久生效的方法
- 下一篇: 安装vim-go插件之后遇到的gopls