【问题标题】:modules: how to force version of dependent lib模块:如何强制依赖库的版本
【发布时间】:2019-12-18 17:36:40
【问题描述】:

整个 go 模块的工作原理就像文档中所说的那样。但是,在一种情况下,依赖库的最新标签是 v1.3.0,它可以通过 mod tidy 找到。但是我需要 v1.1.0。无论我做什么(手动编辑 go.mod,go get -u)'go build' 只会将版本恢复到 v1.3.0,这会破坏构建。确实,模块的全部意义在于设置依赖关系:那怎么办? Go get 应该永久设置它,但它不会保持设置。使用 go1.13.5

【问题讨论】:

  • 你试过运行go get the/package@v1.1.0吗?见Go Wiki: Modules: How to Upgrade and Downgrade Dependencies
  • 感谢您的建议...是的,我有...果然 go.mod 读取 v1.1.0。但是 go build 放回 1.3.0。我开始认为 env var 可能是错误的 b/c 你写的东西真的应该解决问题。
  • 这是间接依赖吗?

标签: go go-modules


【解决方案1】:

无论我做什么(手动编辑 go.mod,go get -u)...

修改go.mod文件中的依赖版本后,你需要做的是执行go mod tidy命令(从你的解释我假设你没有这样做)。

例子:

# modify the dependency version on go.mod, then
go mod tidy

如果您使用供应商,那么您还需要运行go mod vendor 命令来更新vendor/ 文件夹中下载的依赖项。

# modify the dependency version on go.mod, then
go mod tidy
go mod vendor

【讨论】:

  • 你那里为什么有go mod vendor
  • @zerkms 如果供应商文件夹在那里,那么里面的依赖将被更新
  • 当然,但 OP 是否使用 vendoring 并不明显(或者更准确地说:有迹象表明他们不使用)
猜你喜欢
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2013-08-01
  • 2020-09-26
  • 2017-04-14
  • 2019-12-29
  • 2014-09-09
相关资源
最近更新 更多