go開(kāi)發(fā)中很多功能需要做成模塊方便團(tuán)隊(duì)項(xiàng)目引用匕坯,避免重復(fù)開(kāi)發(fā)束昵,這時(shí)候就需要把模塊上傳到git倉(cāng)庫(kù),其他項(xiàng)目只需要通過(guò)go get添加如項(xiàng)目就可以直接使用葛峻。具體操作方法如下:
1.創(chuàng)建module
- 項(xiàng)目的mod文件中module 寫成自己的git倉(cāng)庫(kù)名锹雏,比如github.com/XXX/module; 并且把模塊倉(cāng)庫(kù)設(shè)置成私有
- 本地化倉(cāng)庫(kù)(具體git操作這里不羅列了)
- git添加module模塊倉(cāng)庫(kù)术奖,并把本地倉(cāng)庫(kù)與遠(yuǎn)程此倉(cāng)庫(kù)綁定
- 把本地代碼推送到遠(yuǎn)端
2.go環(huán)境添加私有倉(cāng)庫(kù)設(shè)置
- 控制臺(tái)中輸入go env -w GOPRIVATE="github.com/XXX/*";這里XXX替換成你git的倉(cāng)庫(kù).當(dāng)然如果你的git倉(cāng)庫(kù)不是github只要做相應(yīng)替換
3.到需要引入此模塊的項(xiàng)目中通過(guò)go get github.com/xxx/module@latest獲取次模塊
特別注意:很多人可能會(huì)有疑慮為啥要設(shè)置成私有倉(cāng)礁遵,如果公有倉(cāng)庫(kù)是不是就不需要設(shè)置go env了,答案是對(duì)的腰耙。但是你們可能會(huì)遇到一個(gè)倉(cāng)庫(kù)緩存問(wèn)題榛丢。這個(gè)問(wèn)題我分析大概是由于GOPROXY引起的。由于國(guó)內(nèi)訪問(wèn)github收到限制挺庞,肯定會(huì)設(shè)置代理的晰赞。設(shè)置了代理有經(jīng)常會(huì)遇到一個(gè)大難題。比如你更新了模塊并發(fā)布了选侨。但是通過(guò)go get怎么也無(wú)法升級(jí)到你當(dāng)前的版本甚至你把遠(yuǎn)程代碼倉(cāng)都刪除了依然可以拉取到代碼掖鱼,分析大概是代理緩存了倉(cāng)庫(kù)代碼。所以在項(xiàng)目開(kāi)發(fā)的工具類的模塊(經(jīng)常變動(dòng)的)建議用私倉(cāng)庫(kù)援制,推送后立即拉取就是最新的戏挡。