在 golang 中强制传递依赖版本

我对 golang 中的依赖项有疑问。我的应用程序定义了这样的 go.mod:


module my.host.com/myapp


require (

    ext1.com/module1 v0.0.1

)


go 1.14

依赖关系为:

  1. ext1.com/module1 v0.0.1依赖于ext3.com/module3 v0.0.3

安全扫描检测到ext3.com/module3 v0.0.3不安全,必须更新到v0.0.4

有没有办法“强制” myapp 只获取module3 v0.0.4,覆盖 module1 v0.0.1 go.mod 中定义的指令

  1. 假设ext1.com/module1 v0.0.1已经是最新版本,所以升级它不起作用。

“替换”会起作用吗?

module my.host.com/myapp


require (

    ext1.com/module1 v0.0.1

)


replace ext3.com/module3 v0.0.3 => ext3.com/module3 v0.0.4


go 1.14

提前致谢!


慕无忌1623718
浏览 228回答 1
1回答

繁星淼淼

运行go get -u ext3.com/module3@v0.0.4。这会将模块升级到至少v0.0.4给定依赖关系main -> B -> C,当main需要C比 要求更高B的版本时,选择更高版本,其中// indirect.看到这个https://go.dev/ref/mod#go-mod-file-require如果 go 指令指定 go 1.16 或更低版本,则当所选模块的版本高于主模块的其他依赖项已经暗示的(传递性)版本时,go 命令会添加间接要求。这可能是由于显式升级而发生的(go get -u ./...)我引用这部分是因为你的 go.mod 有go 1.14
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go