V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
kinboy
V2EX  ›  Go 编程语言

go mod tidy 可能会修改指定的依赖版本号?

  •  
  •   kinboy · 2022-05-21 17:20:20 +08:00 · 4194 次点击
    这是一个创建于 677 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样的,我在 go.mod 中指定了一个依赖的版本号,例如 github.com/foo/bar v2.1.0

    当我执行 go mod tidy 之后 go.mod 中这个依赖的版本号发生了自动修改,变成了 github.com/foo/bar v2.2.1

    go version 是 1.17.6

    5 条回复    2022-05-23 11:26:59 +08:00
    iamzuoxinyu
        1
    iamzuoxinyu  
       2022-05-21 18:07:55 +08:00
    -mod=readonly ,这是 go module 系统的坑,或者说是 anti-intuitive 的地方。根本上,go mod 是不支持锁定小版本的。
    janxin
        2
    janxin  
       2022-05-21 21:24:30 +08:00 via iPhone
    会,这个是系统根据规则更改的,官方文档有介绍
    SorcererXW
        3
    SorcererXW  
       2022-05-22 01:07:29 +08:00   ❤️ 1
    go mod 的最小版本号选择的其实是选择所有 package 指定的 mod 的最大版本号
    你指定了 v2.1.0, 但是依赖的某一个包指定了 v2.2.1, 最终编译就使用 v2.2.1 来编译
    stevenbipt
        4
    stevenbipt  
       2022-05-23 09:45:01 +08:00
    使用 replace 强行指定版本吧,这个自动升级太坑了,以前遇到一个库升级以后有个接口抛 panic,都无力吐槽了
    kinboy
        5
    kinboy  
    OP
       2022-05-23 11:26:59 +08:00
    @iamzuoxinyu
    @janxin
    @SorcererXW
    @stevenbipt
    # 谢谢各位大佬支招,三楼应该说明白了问题
    # 我本地项目的依赖关系是这样的
    # A <-- B <-- [email protected]
    # A <-- [email protected]
    # 最终导致 mod tidy 之后,module B 被升级到了 module A 依赖的高版本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2712 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:41 · PVG 23:41 · LAX 08:41 · JFK 11:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.