1
wolfie 2021-11-03 18:41:56 +08:00
只能看 v2 能不能兼容 v1 吧。
|
2
dcsuibian 2021-11-03 18:46:08 +08:00 2
maven-shade-plugin???
|
3
pelloz 2021-11-03 18:49:13 +08:00
将这个功能分开为两个项目...
|
4
xarthur 2021-11-03 18:52:00 +08:00
不懂为什么需要这种需求,感觉是个 XY 问题。
|
5
ic2y 2021-11-03 18:52:42 +08:00
maven-shade-plugin 对某个冲突包进行重命名
|
6
ic2y 2021-11-03 18:54:30 +08:00 1
maven-shade-plugin 对某个冲突包进行重命名;
或者,依赖某些公共库的不同版本共存,自己实现类加载器好了,分别自行加载不同版本的库。 |
7
renmu123 2021-11-03 19:16:21 +08:00 via Android
趁这个机会把 v1 升级到 v2
|
8
hand515 2021-11-03 19:17:00 +08:00 via Android
有源码好办,没有就麻烦
|
9
liuxu OP |
11
realrojeralone 2021-11-03 20:49:58 +08:00
#2 正解,很多开源项目都会 shade 其他项目,以避免 jar 包冲突( guava 和 netty 应该是被 shade 最多的了)
|
12
kingfalse 2021-11-04 07:36:30 +08:00 via Android 1
自己 new 一个 classloader ,别说不同版本的 jar 包了,就是你在 spring boot 里面再启动一个 spring boot 都可以
|
13
Bronya 2021-11-04 08:49:41 +08:00
遇到过这个问题,方案是改名,不过用的 jarjar.jar 进行的改名
过程我记录在这里了 https://www.cnblogs.com/lixin-link/p/15362918.html ,你可以试试。 |
14
Bronya 2021-11-04 10:15:10 +08:00 1
我刚才试了下,用 maven-shade-plugin 比用 jarjar.jar 方便的多,推荐使用!
|
15
Bromine0x23 2021-11-04 10:20:37 +08:00
感觉只能 shade 一个新包出来。
有遇到过这种场景,库的 groupId 和 artifactId 没变,但是实际的 package 变了,两个版本实际能共存,但是 Maven 中无法同时导入。(不过忘了是哪个库,也忘了咋解决的了) |