我一直在將現(xiàn)有項(xiàng)目從通過(guò)Glide使用 vendored 依賴項(xiàng)轉(zhuǎn)換為使用 Go 1.11.x模塊支持。但是我在一個(gè)項(xiàng)目中使用我無(wú)法解決的模塊遇到了一個(gè)特殊情況。內(nèi)部項(xiàng)目“foo”通過(guò)“go mod vendor”提供其依賴項(xiàng):projects/src/foo/ main.go vendor/ ...這在內(nèi)部構(gòu)建該項(xiàng)目時(shí)非常有效,因?yàn)榉?Go 開(kāi)發(fā)人員可以將項(xiàng)目克隆到任何位置并構(gòu)建它,而無(wú)需外部代理訪問(wèn)來(lái)下載依賴項(xiàng)?,F(xiàn)在我試圖讓項(xiàng)目“bar”使用庫(kù)“foo”構(gòu)建一個(gè)工具。package barimport "internal.com/project/foo"“go.mod”文件僅包含:module internal.com/project/barrequire internal.com/project/foo v0.0.0-...我會(huì)通過(guò)以下方式供應(yīng)商:go module vendor我通過(guò)以下方式構(gòu)建:go build -mod=vendor我所看到的是,“foo”將從內(nèi)部 git 存儲(chǔ)庫(kù)中克隆,并且其所有依賴項(xiàng)將從其遠(yuǎn)程 git 來(lái)源下載,并且我的“go.sum”文件將使用所有臨時(shí)依賴項(xiàng)進(jìn)行更新。但我真正想要的是只從我的內(nèi)部網(wǎng)絡(luò)獲取“foo”并讓它扁平化供應(yīng)商的依賴項(xiàng)。理想情況下,不應(yīng)有外部 http 請(qǐng)求。這可能嗎?“-mod=vendor”標(biāo)志在直接構(gòu)建項(xiàng)目“foo”時(shí)非常有用。但它似乎并不適用于此,因?yàn)轫?xiàng)目“bar”不想供應(yīng)商。它想要獲得一個(gè)主要依賴項(xiàng),就是這樣。看起來(lái) Go 模塊支持并不關(guān)心扁平化供應(yīng)商的瞬態(tài)依賴性。以前用作glide包管理器時(shí),它會(huì)從內(nèi)部 git 存儲(chǔ)庫(kù)中獲取“foo”,然后將其所有依賴項(xiàng)扁平化到我的供應(yīng)商目錄中。最初作為問(wèn)題發(fā)布到 golang-nuts,沒(méi)有回復(fù)。
1 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
它目前不能那樣工作,只使用頂級(jí)供應(yīng)商目錄。從模塊幫助:
要使用主模塊的頂級(jí)供應(yīng)商目錄進(jìn)行構(gòu)建以滿足依賴性(禁用通常的網(wǎng)絡(luò)資源和本地緩存),請(qǐng)使用“go build -mod=vendor”。請(qǐng)注意,僅使用主模塊的頂級(jí)供應(yīng)商目錄;其他位置的供應(yīng)商目錄仍然被忽略。
對(duì)于這個(gè)特定的用例,我建議等到go modules
成熟。
- 1 回答
- 0 關(guān)注
- 99 瀏覽
添加回答
舉報(bào)
0/150
提交
取消