1 回答

TA貢獻1963條經驗 獲得超6個贊
這是一個 Go 1.16 問題,目前正在 golang/go
問題 44529 中進行調查
它包括Jay Conrod的評論:
go mod tidy
并且都可能通過網絡查找任何所需模塊未提供的導入包。
如果在本地替換模塊,go命令將首先查找該命令,但我認為它可能仍然會轉到網絡以獲取模塊路徑的其他前綴。go get
相反,您可以在替換不存在的版本時添加對該版本的要求:
go mod edit -require example.com/[email protected] -replace example.com/[email protected]=../local添加替換模塊(即使是左側沒有版本的替換模塊)也不會自動將該模塊添加到構建列表中。
如果是這樣,該命令將讀取其文件并應用其要求。這可能會影響其他模塊的選定版本,即使被替換的模塊沒有提供任何軟件包。go
go.mod
go mod tidy
如果可以添加替換的模塊,則永遠不要進行網絡查找。(請參閱import.go#queryImp()
)
go get
另一方面,將執行網絡查找以識別真正的最新版本,并考慮您的替換(query.go#Versions()
),然后該版本將被替換而不是下載。
它這樣做,以便 go get 添加的最新版本始終與 一致,并且(如果可能)您的 require 指令始終為下游使用者(如果有)指定有效版本,以便它們在需要您的模塊時不會中斷。(下游消費者不會選擇您的替換指令,因此他們需要一個有效的版本。go list -m [?]@latest
如果未對相關存儲庫使用代理,則該查找可能涉及克隆上游存儲庫。因此,這可能是一個非常昂貴的操作。(請注意,go 命令的官方發行版默認使用,但命令的 Fedora 分支不使用。
proxy.golang.org
go
如果該網絡查找失敗,則還將回退到替換版本(
query.go#Latest()
go get
)
- 1 回答
- 0 關注
- 162 瀏覽
添加回答
舉報