为了账号安全,请及时绑定邮箱和手机立即绑定

始终需要 go.mod 中依赖项的最新版本

始终需要 go.mod 中依赖项的最新版本

Go
慕妹3146593 2022-09-12 17:01:09
撇开这是否是一个好主意不谈,有没有办法构建一种方法,以便始终使用最新版本的依赖项?go.mod我发现的一种方法是,例如,拥有require (     gonum.org/v1/gonum latest )在使用例如 .但是,这也会更新我的文件,删除标记。go getgo.modlatest我是否应该将文件保留在我的git存储库中作为包含标签的版本,并允许用户在构建等时更新版本?go.modlatest
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

无法在 中自动执行此操作。这实际上是设计使然:旨在让 go 命令在任何构建中确定性地选择一组版本。如果 go 命令始终选取依赖项的最新版本,则所选版本集将随时间而更改,而无需任何用户操作。如果其中一个依赖项始终选择其依赖项的最新版本,则可能会破坏您的构建,并且很难覆盖。go.modgo.mod

go get example.com/mod是保持最新状态的最佳方式。这需要手动完成,但如果您有大量依赖项,则可以使用 CI 中的脚本或操作自动执行它。


查看完整回答
反对 回复 2022-09-12
?
跃然一笑

TA贡献1826条经验 获得超6个赞

只需运行 .go get <module>

go get下载依赖项的最新版本,因为这就是它的作用,而不是因为在 中指定了 。latestgo.mod

有没有办法构建go.mod,以便始终使用最新版本的依赖项?

不,无论如何,您都不应该自己手动编辑指令的内容。此外,指令的语法定义为go.modrequirerequire

require module-path module-version

其中可以是实际的标记版本或伪版本,例如,当您需要特定提交时。module-version

从技术上讲,您可以编写指令,但是下次运行命令时,它将用实际的最新(伪)版本标记替换该单词。它不会留下来,否则你不会有确定性的依赖关系。latestrequiregolatestlatest

相关:如何将 go.mod 中的 Go 模块依赖关系指向存储库中的最新提交?


查看完整回答
反对 回复 2022-09-12
  • 2 回答
  • 0 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号