1 回答

TA贡献1963条经验 获得超6个赞
这是一个 Go 1.16 问题,目前正在 golang/go
问题 44529 中进行调查
它包括Jay Conrod的评论:
go mod tidy
并且都可能通过网络查找任何所需模块未提供的导入包。
如果在本地替换模块,go命令将首先查找该命令,但我认为它可能仍然会转到网络以获取模块路径的其他前缀。go get
相反,您可以在替换不存在的版本时添加对该版本的要求:
go mod edit -require example.com/mod@v0.0.0-local -replace example.com/mod@v0.0.0-local=../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 关注
- 177 浏览
添加回答
举报