【问题标题】:Why go.mod keeps changing with go test为什么 go.mod 会随着 go test 不断变化
【发布时间】:2020-05-06 13:19:19
【问题描述】:

您好,我想在我的 go.mod 中添加特定版本的依赖项,例如

    github.com/dependecy v1.7.0

当我运行go testgo build 时,有时它会更新为

    github.com/dependecy v1.8.0

棘手的部分是它有时会改变,有时则不会。我们希望固定到旧版本,因为新版本有错误。知道为什么会这样吗?

【问题讨论】:

  • 基本上任何go 命令的调用都可能修改go.mod,除非你指定-mod=readonly。请注意,go build 和 go test 编译一组不同的文件。所以 go test 可能包含 require 1.8.0 的附加模块。如果依赖项需要 1.8.0,则出于显而易见的原因,您不能将其固定到 1.7.0。

标签: go go-modules


【解决方案1】:

我相信发生这种情况的原因是因为您可能有一个可能需要更高版本的模块的依赖项。来自 Go 文档 here

如果将特定模块的多个版本添加到列表中,则最后仅保留最新版本(根据语义版本排序)以供构建使用。

您可以尝试文档中列出的命令,或者使用-mod=readonly 标志运行go build。这应该可以帮助您了解可能触发此问题的原因。

【讨论】:

    【解决方案2】:

    Go 模块不支持单个模块中同一包的多个次要版本,如果添加,则最后只保留最新版本以供在构建中使用。

    你可以有一些需要更高版本的依赖并替换旧的。

    如果某个模块推出了带有错误的 v1.8.0,请根据需要提交错误或分叉存储库。

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 1970-01-01
      • 2021-08-22
      • 2018-05-19
      • 2021-10-04
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      相关资源
      最近更新 更多