Go語(yǔ)言包管理工具Godep的用法
一、為什么要包管理
默認(rèn)Go的第三方包都是放在Gopath的src目錄下,而且這些包都沒(méi)有版本號(hào)的概念,這樣的可能會(huì)出現(xiàn)一些問(wèn)題。
舉個(gè)例子:當(dāng)A同事將開(kāi)發(fā)完程序之后,此時(shí)可能引用了一個(gè)第三方的包,過(guò)了不久之后,B同事接手了該項(xiàng)目,此時(shí)如果B同事通過(guò)go get 命令獲取了包,而且包的版本進(jìn)行了升級(jí),恰巧這個(gè)包又不兼容以前的版本,這就會(huì)導(dǎo)致程序編譯錯(cuò)誤等問(wèn)題?;蛘弋?dāng)這個(gè)維護(hù)的第三方包刪除了,那么B同學(xué)則不能下載到該包。
由上面的例子就能知道,為什么需要進(jìn)行包的依賴管理了。
go里面進(jìn)行包依賴管理的工具有幾個(gè)。godep就是其中之一。
二、安裝godep
1.安裝方法: go get github.com/tools/godep
2.驗(yàn)證是否安裝成功:在shell里面鍵入 godep ,應(yīng)該會(huì)出現(xiàn)幫助信息。
Usage: godep command [arguments] The commands are: save list and copy dependencies into Godeps //save命令主要是用于保存當(dāng)前的依賴 go run the go tool with saved dependencies //主要是用于執(zhí)行Go程序,相當(dāng)于在原來(lái)的go命令上套了一層,因?yàn)樯婕暗搅税芾? get download and install packages with specified dependencies //get命令主要是用于獲取當(dāng)前指定的依賴包 path print GOPATH for dependency code restore check out listed dependency versions in GOPATH //把依賴的包都下載到Gopath當(dāng)中 update update selected packages or the go version //更新依賴的包 diff shows the diff between current and previously saved set of dependencies version show version info
三、演示如何使用godep
如下項(xiàng)目使用了第三方的包,那么我們就可以使用godep進(jìn)行包管理
1. 在項(xiàng)目根目錄,執(zhí)行godep save
命令,如果執(zhí)行成功,則會(huì)生成兩個(gè)文件夾 Godeps 和 vendor
godep save 會(huì)把當(dāng)前包所依賴的所有第三方包掃描出來(lái),然后將源代碼放在vendor目錄下。
GoDeps保存的是第三方包的依賴信息
Vendor保存所有依賴的第三方包
可以查看一下Godep.json
{ "ImportPath": "godepDemo/protobuf", "GoVersion": "go1.10", "GodepVersion": "v80", "Deps": [ { "ImportPath": "github.com/golang/protobuf/proto", "Comment": "v1.3.2-1-g4c88cc3f", "Rev": "4c88cc3f1a34ffade77b79abc53335d1e511f25b" } ] }
Deps這一個(gè)字段里面保存著當(dāng)前依賴包的路徑、git提交的版本號(hào)信息。下次在拉下代碼之后,執(zhí)行Go build 就會(huì)執(zhí)行Vendor里面的代碼,這樣就再也不用擔(dān)心代碼不一致的問(wèn)題。
備注:當(dāng)引用的第三方包要升級(jí)了怎么辦,那么就修改Godep.json里面的提交的版本號(hào)就行了。
Godep是怎么實(shí)現(xiàn)版本管理的,可以參考下面這個(gè)圖。
總結(jié)如何使用godep
- 1.保證程序能夠正常編譯
- 2.執(zhí)行g(shù)odep save 命令,執(zhí)行之后會(huì)將所有的依賴的第三方包掃描出來(lái),生成Godeps和Vendor目錄
- 3.提交上面兩個(gè)文件夾到自己的代碼庫(kù),提交之后我們代碼中的第三方依賴就固定下來(lái)了。
- 4.如果需要更新依賴的版本,那么直接更新godep.json里面的第三方包的版本號(hào),然后再執(zhí)行一次godep save,最后提交到我們的代碼庫(kù)就行了。
例如:可以查看一下我依賴的protobuf的commitId
然后更新一下Godeps.json里面的版本號(hào)
到此這篇關(guān)于Go使用Godep進(jìn)行包管理的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入解析Go語(yǔ)言中HTTP請(qǐng)求處理的底層實(shí)現(xiàn)
本文將詳細(xì)介紹?Go?語(yǔ)言中?HTTP?請(qǐng)求處理的底層機(jī)制,包括工作流程、創(chuàng)建?Listen?Socket?監(jiān)聽(tīng)端口、接收客戶端請(qǐng)求并建立連接以及處理客戶端請(qǐng)求并返回響應(yīng)等,需要的朋友可以參考下2023-05-05Go語(yǔ)言操作redis數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Go語(yǔ)言操作redis數(shù)據(jù)庫(kù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07教你利用Golang可選參數(shù)實(shí)現(xiàn)可選模式
本文討論Golang函數(shù)可選參數(shù)及函數(shù)類型,以及如何利用可選函數(shù)類型實(shí)現(xiàn)可選模式。同時(shí)通過(guò)構(gòu)造函數(shù)作為示例,實(shí)現(xiàn)強(qiáng)大帶可選參數(shù)的構(gòu)造函數(shù),讓代碼更直觀、靈活、支持?jǐn)U展2023-01-0110個(gè)可以優(yōu)化代碼的Go語(yǔ)言技巧分享
這篇文章主要為大家詳細(xì)介紹了10個(gè)可以優(yōu)化代碼的Go語(yǔ)言技巧,從而讓我們的代碼更加優(yōu)雅,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2024-01-01Go語(yǔ)言json編碼駝峰轉(zhuǎn)下劃線、下劃線轉(zhuǎn)駝峰的實(shí)現(xiàn)
這篇文章主要介紹了Go語(yǔ)言json編碼駝峰轉(zhuǎn)下劃線、下劃線轉(zhuǎn)駝峰的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Go語(yǔ)言實(shí)現(xiàn)定時(shí)器的方法
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)定時(shí)器的方法,涉及Go語(yǔ)言時(shí)間操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02Golang干貨分享之利用AST實(shí)現(xiàn)AOP功能
本文主要是一個(gè)純干貨分享,主要介紹了Golang如何利用AST實(shí)現(xiàn)AOP功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號(hào)等操作
這篇文章主要介紹了Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號(hào)等操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05