登录
首页 >  Golang >  Go问答

用 fork 替代 Go 依赖:同一代码库用于不同的模块路径

来源:stackoverflow

时间:2024-02-17 20:27:26 129浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《用 fork 替代 Go 依赖:同一代码库用于不同的模块路径》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我有一个非常大的go项目,依赖于github.com/golang/mock。不幸的是,这个包不再维护,开发人员已指示人们使用 go.uber.org/mock 上的分支。所以我想用 go.uber.org/mock 替换 github.com/golang/mock 依赖项。

据我了解,这正是 go.mod 的 replace 指令的用途(允许您替换依赖项,而无需更改每个文件中的导入路径)。因此,用 fork 替换此模块应该很简单,只需将以下行添加到我的 go.mod 中即可:

replace github.com/golang/mock => go.uber.org/mock v0.2.0

不幸的是,这会在尝试运行任何 go 命令时导致错误:

$ go mod tidy
...
go: go.uber.org/[email protected] used for two different module paths (github.com/golang/mock and go.uber.org/mock)

我在这里做错了什么?

如有必要,您可以在此处查看存储库/提交。


正确答案


根据 replace directive 的文档:

无论替换是使用本地路径还是模块路径指定,如果替换模块有 go.mod 文件,则其模块指令必须与其替换的模块路径匹配。

此处不能使用 replace 指令。

由于 go.uber.org/mock 是使用不同的模块路径发布的,因此我认为您必须将其视为与 github.com/golang/mock 完全不同的模块。

今天关于《用 fork 替代 Go 依赖:同一代码库用于不同的模块路径》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>