日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用govendor灵活管理Go程序中的依赖包

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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程序中的依赖包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。