登录
首页 >  Golang >  Go问答

更新Go模块的路径方法

来源:stackoverflow

时间:2024-02-28 21:33:24 308浏览 收藏

哈喽!今天心血来潮给大家带来了《更新Go模块的路径方法》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我有一个 github 存储库 github.com/user/somerepo

我通过执行 go mod init **github.com/user/somerepo** 来初始化它

我需要更改此依赖关系并使其指向另一个 github 存储库。比方说:github.com/user/a- different-repo

是否有任何 go 命令可以更新所有文件中的所有 import 语句?


解决方案


go mod edit -replace 是你的朋友。

来自文档(Source):

-replace=old[@v]=new[@v] 标志添加给定的替换 模块路径和版本对。如果old@v中的@v被省略,则a 添加左侧没有版本的替换,

这是重要的部分:

适用于旧模块路径的所有版本。如果@v在 new@v 被省略,新路径应该是本地模块根 目录,而不是模块路径。请注意 -replace 会覆盖任何 旧的[@v]的冗余替换,因此省略@v将删除现有的 特定版本的替换。

这里是负责更换的AddReplace func

现在要实现它,您的每个存储库都必须映射到您的 gopath。 关于 gopath 的一点回忆:

当您希望存储库成为“go gettable”包时,您应该将此存储库映射到您的 gopath。

As explained here 当您执行 go get 时,它会首先在您的 $gopath 中查找并获取最新版本的软件包(或者如果您在 go.mod 文件中指定则为特定版本)

然后您可以通过执行以下命令来实现编辑:

go mod edit -replace github.com/usera/[email protected]=github.com/usera/[email protected]

另一种方法(也许是更好的方法)是在 go.mod 文件中执行此操作,如下所示:

module foo.bar                        

  replace github.com/UserA/foo => github.com/UserA/bar

  require (   
  github.com/UserA/foo v0.0.1
 )

当然,只有当每个存储库都映射到您的 gopath 时,这才有效。

另请参阅此处以获取进一步说明:when-should-i-use-the-replace-directive

go mod edit -module github.com/user/a- different-repo

到这里,我们也就讲完了《更新Go模块的路径方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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