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

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