JAVA使用 Shade 进行依赖冲突处理
时间:2022.02.23:23.04
在实际的项目中,经常会遇到依赖冲突的情况,当然,如果你是使用的MAVEN
进行的项目开发,那么你可以很简单的使用maven helper
插件进行依赖查看,例如在源码fabric-sdk-java
中就会有如下的依赖冲突
可以看到 org.miracl.milagro.amcl:milagro-crypto-java:0.4.0
依赖了com.google.guava:guava:23.0
,但是其他依赖引入的都是com.google.guava:guava:30.1.1-android
这样就存在了依赖冲突,当你想要同时保留这两个包,但是在使用时有可以在一起使用,那么你就需要使用到插件org.apache.maven.plugins:maven-shade-plugin
来处理依赖了
首先创建一个新工程,使用如下pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.miracl.milagro.amcl</groupId><artifactId>milagro-crypto-java</artifactId><version>0.4.0-shaded</version><dependencies><dependency><groupId>org.miracl.milagro.amcl</groupId><artifactId>milagro-crypto-java</artifactId><version>0.4.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.1</version><configuration><createDependencyReducedPom>true</createDependencyReducedPom><promoteTransitiveDependencies>true</promoteTransitiveDependencies></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><artifactSet><includes><include>org.miracl.milagro.amcl:milagro-crypto-java</include><include>com.google.guava:guava</include></includes></artifactSet><relocations><relocation><pattern>org.apache.milagro.amcl</pattern><shadedPattern>org.apache.milagro.amcl.shaded</shadedPattern></relocation><relocation><pattern>com.google</pattern><shadedPattern>com.google.shaded</shadedPattern></relocation></relocations></configuration></execution></executions></plugin></plugins></build></project>
将上面的工程打包,这样就对guava
完成了重定向工作,打好的包结构如下图所示,可以看到现在org.miracl.milagro.amcl:milagro-crypto-java:0.4.0-shaded
其实相当于是一个新包,但是功能和之前的一样,只是其中依赖的guava
作为单独的引入,并且在使用中的路径为com.google.shaded
和之前的com.google
有着明显的区别,这样就采用shaded
的方式处理好依赖冲突了
感谢您的观看,祝您生活愉快!!!
唯有热爱才能永恒!!!
JAVA使用 Shade 进行依赖冲突处理相关推荐
- 我爱Java系列---【 maven依赖版本冲突的解决方法】
我爱Java系列---[ maven依赖版本冲突的解决方法] 参考文章: (1)我爱Java系列---[ maven依赖版本冲突的解决方法] (2)https://www.cnblogs.com/hu ...
- 【Java从0到架构师】Maven - 依赖冲突、分模块构建项目
SpringBoot - Maven 补充 依赖冲突 解决方案 - dependencyManagement 自定义属性 分模块构建项目 继承 - parent 聚合 - modules 依赖 - d ...
- maven中如何解决jar包的依赖冲突Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException
产生jar包依赖冲突的原因: 假如在一个项目中,如项目demo中,我们即引入了aaa.jar又引入了bbb.jar,但是这两个jar包同时又引入了传递依赖xxx.jar,不同的是aaa.jar和bbb ...
- Java学习笔记之二:Maven中依赖使用exclusions设置,来解决依赖冲突
一.依赖冲突产生的原因 调用的某个A包依赖于B包,B又依赖于C 和D 但是C依赖于E的1.0版本,D依赖于E的2.0版本 1.0跟2.0冲突了. 常见解决办法:直接使用2.0版本,删除1.0的依赖 ...
- Maven依赖原则及如何解决Maven依赖冲突
前言 在大数据应用中,现在发现依赖关系非常复杂,在上线之前很长测试,前一段时间在部署udf 出现了导致生产Hiveserver2 宕机问题,出现严重事故.现在就咨询研究一下.Maven虽然已经诞生多年 ...
- 使用maven-shade-plugin插件解决spark依赖冲突问题
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/54973182冷血之心的博客) 依赖冲突:NoSuchMethodE ...
- 又出现依赖冲突?试试 IDEA 解决 Maven 依赖冲突的高能神器!
以下文章来源方志朋的博客,回复"666"获面试宝典 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的.Maven的依赖机制会导致Jar包的冲突.举个 ...
- 是时候装逼了,试试 IDEA 解决 Maven 依赖冲突的高能神器!
点击关注公众号,Java干货及时送达 来源 | segmentfault.com/a/1190000017542396 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的 ...
- 解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:桔子214032 segmentfault.com/ ...
最新文章
- sqlhelper使用指南
- 2018 SaaS应用大会 掀起SaaS应用新浪潮
- DOS MD命令三种用法
- 通过SCCM部署Office365应用
- Git复习(十二)之命令专场
- 8. Dropout and Strides For Larger Models
- Swarm的进化和大规模应用
- javascript--this机制
- 伺服电机(舵机)简单介绍
- 6大关键词解析儿童学习桌消费市场
- 转:人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水...
- Tony Bai带你入门Go语言
- android 手机录屏功能,手机自带录屏功能在哪里找?轻松搞定屏幕录制
- kettle carte子服务器的使用
- 机器人运动学---雅克比矩阵伪逆
- ebay的api的开发技术笔记
- windows10 添加键盘音效
- 1.什么是Cython
- 硬件描述语言(HDL)
- 使用过滤器做一个过滤敏感词实例
热门文章
- Python中的string和bytes的转换
- 微信小程序rich-text富文本图片
- c语言中ipv6地址比较大小,ipv6地址处置
- css绘制梯形图形,及显示矩形图片
- AD7606八通道AD采集模块测试
- python 处理大量数据_如何用python处理大量数据
- A Retinex based GAN Pipeline to Utilize Paired and Unpaired Datasets for Enhancing Low Light Images
- 手把手教你使用wordpress搭建个人网站
- ssm药品大全网站的设计与实现毕业设计源码281128
- iOS之支持https与ssl双向验证(包含:解决UIWebView加载不了https网页的图片,css,js等外部资源)