解决maven依赖冲突,同时保留多个冲突的依赖

目录

写在前面

解决问题

jarjar包下载

如何使用jarjar

背景

打包 jarjar


写在前面

        一般的依赖冲突,还是以排除依赖中的依赖,保留确定的一个版本为主。

        只有特殊情况,不得不同时保留两个依赖,才需要使用本文中的方法。

        本文提供的 jarjar 工具包,2022.05.27 亲测可用,验证jdk版本: 1.8.0_60-b27

解决问题

        使用 jarjar 工具包修改 jar包里的包名,生成新的jar包,再作为新的依赖引用,例如本文的方式是把新的jar包上传到私服。

1. jarjar包下载

        jarjar-jdk8.jar

2. 如何使用jarjar

        官方说明

        可参考的其他文章:通过jarjar.jar来修改jar包名

背景

        非常坑的流氓第三方依赖(项目原因必须使用),把google的部分包作为源码放在了自己的包里,导致完全不相关的包,和 google 的工具包里面的类和方法冲突了,这两个包都必须保留。

        最初参考了网上的这篇文章:Maven 同一依赖多版本共存 ,验证后发现里面的jarjar包版本可能有点老,只能自己研究了下ant,根据最新的源码打了一个包(非google官方代码,官方提供的jarjar包都比较老,不知道是否还在维护)。

        如果看到文章的你发现本文提供的jarjar包已经不能用了,或者需要更高的jdk版本支持,或者单纯想了解一下,可以继续看下面的 jarjar 打包过程。

打包 jarjar

        jarjar 是 google 提供的修改 jar 包的工具,官方提供的jar包都比较老了,官方下载地址

好在有大佬维护这个项目,更新了asm等包:项目地址 。

        使用ant打包项目,可参考 使用Ant打包Java程序

1. 下载 jarjar 源码后,修改build.xml中的如下参数 :

<property name="compile.source" value="8"/>  // 该参数为jdk版本,亲测8可用

<property name="version" value="jdk8"/>  // 该参数对应新生成的jar包名称后缀,可选择修改

2. 安装ant后,在 build.xml 目录下,执行 ant 即可 

PS E:\code\jarjar\jarjar> ant
Buildfile: E:\code\jarjar\jarjar\build.xml

init:
     [echo] bootclasspath

compile:

jar:
   [jarjar] Building jar: E:\code\jarjar\jarjar\dist\jarjar-jdk8.jar

BUILD SUCCESSFUL
Total time: 0 seconds

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值