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

go mod 版本冲突问题

  •  
  •   panda666 · 2022-04-18 18:20:43 +08:00 · 3461 次点击
    这是一个创建于 979 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目中使用了第三方库 A ,A 依赖 go.opentelemetry.io/otel v0.x.x ,现在要在项目加入第三方库 B ,B 依赖 go.opentelemetry.io/otel v1.x.x

    otel 的这两个版本不兼容,指定 v0.x.x 还是 v1.x.x 都会报错

    gopkg.in/open-telemetry/opentelemetry-go.v1 试过了,会报错

    还有什么其它解决办法吗?
    15 条回复    2022-04-19 18:08:47 +08:00
    FrankAdler
        1
    FrankAdler  
       2022-04-18 18:49:05 +08:00
    按版本引入,然后使用别名
    import (
    v1 xxx.com/v1
    v2 xxx.com/v2
    )
    panda666
        2
    panda666  
    OP
       2022-04-18 18:59:37 +08:00 via Android
    @FrankAdler 没 v1 这个 path
    FrankAdler
        3
    FrankAdler  
       2022-04-18 19:05:18 +08:00
    @panda666 #2 go 可以基于 git commit id 或者 tag 来当作版本啊
    panda666
        4
    panda666  
    OP
       2022-04-18 19:10:25 +08:00 via Android
    @FrankAdler 版本和 path 是两个东西吧
    Wuuuu
        5
    Wuuuu  
       2022-04-18 19:26:01 +08:00
    感觉不好搞,因为 golang 用的是 semantic version number ,0.x.x 只是测试版本,1.x.x 都发布了 B 还不升级……如果是 1.0.0 2.0.0 还能用 /V2 这种方法。现在这样僵住了。
    GopherDaily
        6
    GopherDaily  
       2022-04-18 20:12:20 +08:00
    otel 这个是比较特殊的情况,自己给依赖 v0.x.y 的库提个 PR ,升级到 v1.x.y
    timpaik
        7
    timpaik  
       2022-04-18 20:14:59 +08:00 via Android
    试试在 go.mod 里用 replace
    FrankAdler
        8
    FrankAdler  
       2022-04-18 20:17:11 +08:00 via iPhone
    @panda666 v0 不更新了 fork 下改下 go.mod 里面的 moudle 吧
    FrankAdler
        9
    FrankAdler  
       2022-04-18 20:17:57 +08:00 via iPhone
    replace 我试了下 貌似没跑通
    hzzhzzdogee
        10
    hzzhzzdogee  
       2022-04-18 21:21:57 +08:00
    1. replace
    2. 自己 fork 一份
    tairan2006
        11
    tairan2006  
       2022-04-19 08:54:34 +08:00
    自己 fork 是最常见的方案,golang 的版本管理还是稀烂
    panda666
        12
    panda666  
    OP
       2022-04-19 09:23:05 +08:00
    @hzzhzzdogee replace 试了的,会报错,看来只能 fork 了
    snowlyg
        13
    snowlyg  
       2022-04-19 09:48:23 +08:00
    难道不是换一个第三方依赖库吗?或者自己重写一个。第三方的库又不是官方的,维护者如果不太用心经常会出现这些问题。
    beixiao
        14
    beixiao  
       2022-04-19 12:16:39 +08:00 via iPhone
    三方库正常情况下 0.x.x 和 1.x.x 应该是兼容的,作者这么搞显然不太行,建议 fork 之后版本号都加 1
    lysS
        15
    lysS  
       2022-04-19 18:08:47 +08:00
    我还专门试过,两个第三方库都引用了不同版本的同一个库,是会保存的

    我猜测是因为 go mod 把树状拆分为二阶的了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1417 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:49 · PVG 00:49 · LAX 08:49 · JFK 11:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.