spring-boot 如何引入同一个包多个版本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
liuxu
V2EX    Java

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

  •  
  •   liuxu Nov 3, 2021 2958 views
    This topic created in 1635 days ago, the information mentioned may be changed or developed.
    maven 管理,项目依赖有一个包 a:v1 ,现在引入一个新包 b ,但是 b 依赖 a:v2 ,而且 a:v1 和 a:v2 不兼容,这种情况都是怎么处理的
    15 replies    2021-11-04 10:20:37 +08:00
    wolfie
        1
    wolfie  
       Nov 3, 2021
    只能看 v2 能不能兼容 v1 吧。
    dcsuibian
        2
    dcsuibian  
       Nov 3, 2021   2
    maven-shade-plugin???
    pelloz
        3
    pelloz  
       Nov 3, 2021
    将这个功能分开为两个项目...
    xarthur
        4
    xarthur  
       Nov 3, 2021
    不懂为什么需要这种需求,感觉是个 XY 问题。
    ic2y
        5
    ic2y  
       Nov 3, 2021
    maven-shade-plugin 对某个冲突包进行重命名
    ic2y
        6
    ic2y  
       Nov 3, 2021   1
    maven-shade-plugin 对某个冲突包进行重命名;

    或者,依赖某些公共库的不同版本共存,自己实现类加载器好了,分别自行加载不同版本的库。
    renmu123
        7
    renmu123  
       Nov 3, 2021 via Android
    趁这个机会把 v1 升级到 v2
    Finest
        8
    Finest  
       Nov 3, 2021 via Android
    有源码好办,没有就麻烦
    liuxu
        9
    liuxu  
    OP
       Nov 3, 2021 via Android
    @ic2y 多谢,我看看怎么整


    @renmu123 目前是在升级到 v2 ,但是解决了一个问题却引出千千万万个问题,我看怎么搞
    liuxu
        10
    liuxu  
    OP
       Nov 3, 2021 via Android
    @hand515 b 没有源码,正在从项目入手
    realrojeralone
        11
    realrojeralone  
       Nov 3, 2021
    #2 正解,很多开源项目都会 shade 其他项目,以避免 jar 包冲突( guava 和 netty 应该是被 shade 最多的了)
    kingfalse
        12
    kingfalse  
       Nov 4, 2021 via Android   1
    自己 new 一个 classloader ,别说不同版本的 jar 包了,就是你在 spring boot 里面再启动一个 spring boot 都可以
    Bronya
        13
    Bronya  
       Nov 4, 2021
    遇到过这个问题,方案是改名,不过用的 jarjar.jar 进行的改名
    过程我记录在这里了 https://www.cnblogs.com/lixin-link/p/15362918.html ,你可以试试。
    Bronya
        14
    Bronya  
       Nov 4, 2021   1
    我刚才试了下,用 maven-shade-plugin 比用 jarjar.jar 方便的多,推荐使用!
    Bromine0x23
        15
    Bromine0x23  
       Nov 4, 2021
    感觉只能 shade 一个新包出来。
    有遇到过这种场景,库的 groupId 和 artifactId 没变,但是实际的 package 变了,两个版本实际能共存,但是 Maven 中无法同时导入。(不过忘了是哪个库,也忘了咋解决的了)
    About     Help     Advertise     Blog     API     FAQ     Solana     5666 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UC 08:21 PVG 16:21 LAX 01:21 JFK 04:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86