go - 无法构建具有外部模块本地副本的项目

标签 go go-modules

我有一个使用外部库的项目,其中有一个错误。为了修复该错误,我尝试做的是克隆外部库,将其放置在项目内的子目录中,然后在那里修复它。因此,如果外部库是 example.com/example/example/,我只需将其放在我的项目中名为 example 的文件夹中,删除 example.com/example/example/ 来自 go.mod 的依赖项,并将所有 example.com/example/example/ import 语句替换为 myproject/example/

问题是该项目无法编译。每当执行go build时,它都会返回一个错误:没有查询“最新”的匹配版本。我发现构建项目的唯一方法是删除克隆的外部库的 go.mod 文件,但这似乎不对。那么构建这样一个项目的正确方法是什么?

最佳答案

正确的方法是使用 replace directive .

这个想法是替换从顶级go.mod文件导入的依赖项的模块名称,而不更改外部依赖项。

所以我所要做的就是将 replace example.com/example/example => ./example 添加到顶级 go.mod.

关于go - 无法构建具有外部模块本地副本的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59348582/

相关文章:

arrays - go 中没有匿名数组?

go - golang 中的空函数

渲染后返回语句的 Golang lint

go - 从同一文件系统中的不同存储库导入 Go 模块

go - 如何在不尝试更新其他模块的情况下将 'go get' 或 'go mod vendor' 用于特定模块?

go - memstats struct 中的哪些字段只引用堆,只引用堆栈

regex - 使用 OR 正则表达式删除过多的破折号

GoLand import go module public repo 失败,版本无效

docker - 如何将 go mod 与本地包和 docker 一起使用?

git - 使用代理获取私有(private)仓库