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

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