golang使用 gomodule 在公共測(cè)試環(huán)境管理go的依賴的實(shí)例詳解
背景:調(diào)試服務(wù)最好的方式就是直接上機(jī)實(shí)踐。對(duì)在公司的員工來(lái)說(shuō),在同一套服務(wù)上協(xié)同開(kāi)發(fā)比在單獨(dú)的環(huán)境上開(kāi)發(fā),應(yīng)該會(huì)更有感覺(jué)。有問(wèn)題可以一起發(fā)現(xiàn)并解決,也能夠一同開(kāi)發(fā)需求。
但是,公司的測(cè)試機(jī)往往是沒(méi)辦法連外網(wǎng)的,而golang 的大部分工程都需要直接從github 上下載依賴,這就導(dǎo)致 依賴文件需要先提前上傳到開(kāi)發(fā)機(jī)上。那么當(dāng)開(kāi)發(fā)機(jī)上需要運(yùn)行多個(gè)golang 工程的時(shí)候,如何共享這些依賴,減少維護(hù)依賴庫(kù)的工作量呢?
這也是需要大家協(xié)作完成的~
最終總結(jié):項(xiàng)目采用 go module + vendor 模式,服務(wù)器上使用統(tǒng)一的GOPATH 路徑。
一、go 工程配置
既然是協(xié)同開(kāi)發(fā),工程我們就建議使用 go module 對(duì)依賴包進(jìn)行管理了。這樣大家可以把依賴都放到統(tǒng)一的GOPATH,如果有新增依賴,直接放到GOPATH 目錄即可。
關(guān)于go module 的介紹
1、初始化 go.mod 代碼
在工程根目錄中,執(zhí)行 go mod init 工程的github地址,生成go.mod 文件。
示例:go mod init gitee.com/atamagaii/mygoproject
2、整理依賴
繼續(xù)在當(dāng)前目錄,執(zhí)行 go mod tidy,整理工程的依賴。
正常情況下,執(zhí)行完成之后go.mod,并且會(huì)生成一個(gè)go.sum 文件。
期間可能會(huì)因?yàn)閕mport 編寫(xiě)不規(guī)范,遇到一些報(bào)錯(cuò),詳見(jiàn)踩坑記錄。
注意:go.mod 和 go.sum 文件都建議提交到git 上,這樣在多人協(xié)同開(kāi)發(fā)一個(gè)項(xiàng)目的時(shí)候,能保證依賴版本的統(tǒng)一。
3、保存項(xiàng)目依賴到 vendor 目錄
直接執(zhí)行 go mod vendor 即可
詳細(xì)說(shuō)明參考踩坑記錄。
vendor 目錄每次都可以在本地生成,因此不需要提交到git 上。
標(biāo)準(zhǔn)的工程目錄如下:
二、服務(wù)器依賴管理
1、上傳所有依賴到服務(wù)器的GOPATH 目錄
主要是 golang.org、github.com、gopkg.in 目錄
2、編譯工程
在自己工程的 src 目錄,執(zhí)行:
go build -o xxx xxx.go
三、踩坑記錄。。
1、PuerkitoBio 踩坑
執(zhí)行g(shù)obuild 之后報(bào)這個(gè)錯(cuò)誤
go: github.com/PuerkitoBio/goquery@v1.5.1: reading github.com/PuerkitoBio/goquery/go.mod at revision v1.5.1: unknown revision v1.5.1
這個(gè)包不知道為啥,通過(guò) go get 下載會(huì)自動(dòng)進(jìn)行依賴,并進(jìn)行編譯放到pkg 庫(kù)。
解決方法:在開(kāi)發(fā)環(huán)境,先通過(guò) go mod vendor 指令將項(xiàng)目本身的直接依賴放到vendor目錄。(這個(gè)目錄就可以不用提交了)
生成效果:
然后將這個(gè)目錄也放到服務(wù)器上,再執(zhí)行:
go build -mod=vendor -o xxx xxx.go
在modules.txt 中的依賴會(huì)優(yōu)先從vendor 目錄中查找。
到此這篇關(guān)于golang使用 gomodule 在公共測(cè)試環(huán)境管理go的依賴的實(shí)例詳解的文章就介紹到這了,更多相關(guān)golang在公共測(cè)試環(huán)境管理go的依賴內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一站式解決方案:在Windows和Linux上快速搭建Go語(yǔ)言開(kāi)發(fā)環(huán)境
本文將介紹如何在Windows和Linux操作系統(tǒng)下搭建Go語(yǔ)言開(kāi)發(fā)環(huán)境,以幫助您更高效地進(jìn)行Go語(yǔ)言開(kāi)發(fā),需要的朋友可以參考下2023-10-10Golang常用環(huán)境變量說(shuō)明與設(shè)置詳解
這篇文章主要介紹了Golang常用環(huán)境變量說(shuō)明與設(shè)置,需要的朋友可以參考下2020-02-02Go設(shè)計(jì)模式原型模式考查點(diǎn)及使用詳解
這篇文章主要為大家介紹了Go設(shè)計(jì)模式原型模式考查點(diǎn)及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12使用Go實(shí)現(xiàn)健壯的內(nèi)存型緩存的方法
這篇文章主要介紹了使用Go實(shí)現(xiàn)健壯的內(nèi)存型緩存,本文比較了字節(jié)緩存和結(jié)構(gòu)體緩存的優(yōu)劣勢(shì),介紹了緩存穿透、緩存錯(cuò)誤、緩存預(yù)熱、緩存?zhèn)鬏敗⒐收限D(zhuǎn)移、緩存淘汰等問(wèn)題,并對(duì)一些常見(jiàn)的緩存庫(kù)進(jìn)行了基準(zhǔn)測(cè)試,需要的朋友可以參考下2022-05-05