1 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是一個(gè) Go 1.16 問(wèn)題,目前正在 golang/go
問(wèn)題 44529 中進(jìn)行調(diào)查
go mod tidy
并且都可能通過(guò)網(wǎng)絡(luò)查找任何所需模塊未提供的導(dǎo)入包。
如果在本地替換模塊,go命令將首先查找該命令,但我認(rèn)為它可能仍然會(huì)轉(zhuǎn)到網(wǎng)絡(luò)以獲取模塊路徑的其他前綴。go get
相反,您可以在替換不存在的版本時(shí)添加對(duì)該版本的要求:
go mod edit -require example.com/mod@v0.0.0-local -replace example.com/mod@v0.0.0-local=../local添加替換模塊(即使是左側(cè)沒(méi)有版本的替換模塊)也不會(huì)自動(dòng)將該模塊添加到構(gòu)建列表中。
如果是這樣,該命令將讀取其文件并應(yīng)用其要求。這可能會(huì)影響其他模塊的選定版本,即使被替換的模塊沒(méi)有提供任何軟件包。go
go.mod
谷歌的Bryan C. Mills補(bǔ)充說(shuō):
go mod tidy
如果可以添加替換的模塊,則永遠(yuǎn)不要進(jìn)行網(wǎng)絡(luò)查找。(請(qǐng)參閱import.go#queryImp()
)
go get
另一方面,將執(zhí)行網(wǎng)絡(luò)查找以識(shí)別真正的最新版本,并考慮您的替換(query.go#Versions()
),然后該版本將被替換而不是下載。
它這樣做,以便 go get 添加的最新版本始終與 一致,并且(如果可能)您的 require 指令始終為下游使用者(如果有)指定有效版本,以便它們?cè)谛枰哪K時(shí)不會(huì)中斷。(下游消費(fèi)者不會(huì)選擇您的替換指令,因此他們需要一個(gè)有效的版本。go list -m [?]@latest
如果未對(duì)相關(guān)存儲(chǔ)庫(kù)使用代理,則該查找可能涉及克隆上游存儲(chǔ)庫(kù)。因此,這可能是一個(gè)非常昂貴的操作。(請(qǐng)注意,go 命令的官方發(fā)行版默認(rèn)使用,但命令的 Fedora 分支不使用。
proxy.golang.org
go
如果該網(wǎng)絡(luò)查找失敗,則還將回退到替換版本(
query.go#Latest()
go get
)
- 1 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報(bào)