在这样的情况下我们应当如何保证不影响项目原有依赖版本的情况下正常使用三方组件呢?此时可以考虑使用maven-shade-插件
maven-shade-介绍
【解决项目版本冲突——maven-shade插件使用】maven-shade-在maven官方网站中提供的一个插件,官方文档中定义其功能如下:
Thisthetothein an uber-jar,itsand to shade - i.e.- theof some of the .
简单来说就是将依赖的包在阶段一起打入jar包中,以及对依赖的jar包进行重命名从而达到隔离的作用 。这里为了解决上面的问题我们主要使用第二个功能特性,使得相同依赖不同版本达到共存的目的 。
解决问题 1.环境准备
这里用来模拟使用maven-shade-解决项目中不同版本共存问题 。原项目此时使用的是1.1.15版本的
假引入一个三方依赖,该依赖使用1.2.75版本的
2.解决方案
搭建一个新的模块-,专门用于存放1.2.75依赖 。在pom文件中添加1.2.75的依赖,然后添加maven-shade-插件 。-的pom如下
从配置文件中可以看到,由于maven-shade-插件在解决这个问题上其实是通过对依赖进行重命名而达到隔离的目的,所以配置主要是集中在中 。这里将以com.开头的包全部重命名为以.开头 。
3.引入依赖
将-进行打包,打包好之后在原项目中引入-的依赖 。此时在引入-之后,可以在项目下看到该依赖中的包名发生了变化
文章插图
此时在代码中调用相关方法,会提示选择所需要包,如下图,此时问题解决,两个版本的可同时使用已经兼容 。
一些需要注意的坑maven-shade-的其他使用
官方配置示例
...org.apache.maven.plugins maven-shade-plugin 3.2.4 packageshade classworlds:classworlds junit:junit jmock:* *:xml-apis org.apache.maven:lib:tests log4j:log4j:jar: ...
官方配置示例
...org.apache.maven.plugins maven-shade-plugin 3.2.4 package
- Win11解决需要使用新应用以打开此WindowsDefender链接
- 显示需要使用新应用打开此ms-windows-store链接的解决办法
- 解决jar包冲突 类重定位
- 终极版解决OneNote无法跳转链接:您的组织策略阻止我们为您完成此操作
- maven项目如何打包运行指定java程序(maven-shade
- 规定排资时计控 项目进度管理7个过程
- keil MDK 新建项目教程
- RFID智能化档案管理解决方案
- 司马懿死前留下了这么个大问题,之后竟数百年没有解决
- win10使用uefi+gpt启动蓝屏的解决方法