V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuxu
V2EX  ›  Java

spring-boot 如何引入同一个包多个版本

  •  
  •   liuxu · 2021-11-03 18:38:49 +08:00 · 2393 次点击
    这是一个创建于 1140 天前的主题,其中的信息可能已经有所发展或是发生改变。
    maven 管理,项目依赖有一个包 a:v1 ,现在引入一个新包 b ,但是 b 依赖 a:v2 ,而且 a:v1 和 a:v2 不兼容,这种情况都是怎么处理的
    15 条回复    2021-11-04 10:20:37 +08:00
    wolfie
        1
    wolfie  
       2021-11-03 18:41:56 +08:00
    只能看 v2 能不能兼容 v1 吧。
    dcsuibian
        2
    dcsuibian  
       2021-11-03 18:46:08 +08:00   ❤️ 2
    maven-shade-plugin???
    pelloz
        3
    pelloz  
       2021-11-03 18:49:13 +08:00
    将这个功能分开为两个项目...
    xarthur
        4
    xarthur  
       2021-11-03 18:52:00 +08:00
    不懂为什么需要这种需求,感觉是个 XY 问题。
    ic2y
        5
    ic2y  
       2021-11-03 18:52:42 +08:00
    maven-shade-plugin 对某个冲突包进行重命名
    ic2y
        6
    ic2y  
       2021-11-03 18:54:30 +08:00   ❤️ 1
    maven-shade-plugin 对某个冲突包进行重命名;

    或者,依赖某些公共库的不同版本共存,自己实现类加载器好了,分别自行加载不同版本的库。
    renmu123
        7
    renmu123  
       2021-11-03 19:16:21 +08:00 via Android
    趁这个机会把 v1 升级到 v2
    hand515
        8
    hand515  
       2021-11-03 19:17:00 +08:00 via Android
    有源码好办,没有就麻烦
    liuxu
        9
    liuxu  
    OP
       2021-11-03 19:20:05 +08:00 via Android
    @ic2y 多谢,我看看怎么整


    @renmu123 目前是在升级到 v2 ,但是解决了一个问题却引出千千万万个问题,我看怎么搞
    liuxu
        10
    liuxu  
    OP
       2021-11-03 19:20:57 +08:00 via Android
    @hand515 b 没有源码,正在从项目入手
    realrojeralone
        11
    realrojeralone  
       2021-11-03 20:49:58 +08:00
    #2 正解,很多开源项目都会 shade 其他项目,以避免 jar 包冲突( guava 和 netty 应该是被 shade 最多的了)
    kingfalse
        12
    kingfalse  
       2021-11-04 07:36:30 +08:00 via Android   ❤️ 1
    自己 new 一个 classloader ,别说不同版本的 jar 包了,就是你在 spring boot 里面再启动一个 spring boot 都可以
    Bronya
        13
    Bronya  
       2021-11-04 08:49:41 +08:00
    遇到过这个问题,方案是改名,不过用的 jarjar.jar 进行的改名
    过程我记录在这里了 https://www.cnblogs.com/lixin-link/p/15362918.html ,你可以试试。
    Bronya
        14
    Bronya  
       2021-11-04 10:15:10 +08:00   ❤️ 1
    我刚才试了下,用 maven-shade-plugin 比用 jarjar.jar 方便的多,推荐使用!
    Bromine0x23
        15
    Bromine0x23  
       2021-11-04 10:20:37 +08:00
    感觉只能 shade 一个新包出来。
    有遇到过这种场景,库的 groupId 和 artifactId 没变,但是实际的 package 变了,两个版本实际能共存,但是 Maven 中无法同时导入。(不过忘了是哪个库,也忘了咋解决的了)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5369 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:54 · PVG 14:54 · LAX 22:54 · JFK 01:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.