猿问

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

撇开这是否是一个好主意不谈,有没有办法构建一种方法,以便始终使用最新版本的依赖项?go.mod

我发现的一种方法是,例如,拥有

require (
    gonum.org/v1/gonum latest
)

在使用例如 .但是,这也会更新我的文件,删除标记。go getgo.modlatest

我是否应该将文件保留在我的git存储库中作为包含标签的版本,并允许用户在构建等时更新版本?go.modlatest


慕妹3146593
浏览 304回答 2
2回答

素胚勾勒不出你

无法在 中自动执行此操作。这实际上是设计使然:旨在让 go 命令在任何构建中确定性地选择一组版本。如果 go 命令始终选取依赖项的最新版本,则所选版本集将随时间而更改,而无需任何用户操作。如果其中一个依赖项始终选择其依赖项的最新版本,则可能会破坏您的构建,并且很难覆盖。go.modgo.modgo get example.com/mod是保持最新状态的最佳方式。这需要手动完成,但如果您有大量依赖项,则可以使用 CI 中的脚本或操作自动执行它。

跃然一笑

只需运行 .go get <module>go get下载依赖项的最新版本,因为这就是它的作用,而不是因为在 中指定了 。latestgo.mod有没有办法构建go.mod,以便始终使用最新版本的依赖项?不,无论如何,您都不应该自己手动编辑指令的内容。此外,指令的语法定义为:go.modrequirerequirerequire module-path module-version其中可以是实际的标记版本或伪版本,例如,当您需要特定提交时。module-version从技术上讲,您可以编写指令,但是下次运行命令时,它将用实际的最新(伪)版本标记替换该单词。它不会留下来,否则你不会有确定性的依赖关系。latestrequiregolatestlatest相关:如何将 go.mod 中的 Go 模块依赖关系指向存储库中的最新提交?
随时随地看视频慕课网APP

相关分类

Go
我要回答