时间: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 进行依赖冲突处理相关推荐

  1. 我爱Java系列---【 maven依赖版本冲突的解决方法】

    我爱Java系列---[ maven依赖版本冲突的解决方法] 参考文章: (1)我爱Java系列---[ maven依赖版本冲突的解决方法] (2)https://www.cnblogs.com/hu ...

  2. 【Java从0到架构师】Maven - 依赖冲突、分模块构建项目

    SpringBoot - Maven 补充 依赖冲突 解决方案 - dependencyManagement 自定义属性 分模块构建项目 继承 - parent 聚合 - modules 依赖 - d ...

  3. maven中如何解决jar包的依赖冲突Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException

    产生jar包依赖冲突的原因: 假如在一个项目中,如项目demo中,我们即引入了aaa.jar又引入了bbb.jar,但是这两个jar包同时又引入了传递依赖xxx.jar,不同的是aaa.jar和bbb ...

  4. Java学习笔记之二:Maven中依赖使用exclusions设置,来解决依赖冲突

    一.依赖冲突产生的原因 调用的某个A包依赖于B包,B又依赖于C 和D 但是C依赖于E的1.0版本,D依赖于E的2.0版本  1.0跟2.0冲突了. 常见解决办法:直接使用2.0版本,删除1.0的依赖 ...

  5. Maven依赖原则及如何解决Maven依赖冲突

    前言 在大数据应用中,现在发现依赖关系非常复杂,在上线之前很长测试,前一段时间在部署udf 出现了导致生产Hiveserver2 宕机问题,出现严重事故.现在就咨询研究一下.Maven虽然已经诞生多年 ...

  6. 使用maven-shade-plugin插件解决spark依赖冲突问题

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/54973182冷血之心的博客) 依赖冲突:NoSuchMethodE ...

  7. 又出现依赖冲突?试试 IDEA 解决 Maven 依赖冲突的高能神器!

    以下文章来源方志朋的博客,回复"666"获面试宝典 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的.Maven的依赖机制会导致Jar包的冲突.举个 ...

  8. 是时候装逼了,试试 IDEA 解决 Maven 依赖冲突的高能神器!

    点击关注公众号,Java干货及时送达 来源 | segmentfault.com/a/1190000017542396 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的 ...

  9. 解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:桔子214032 segmentfault.com/ ...

最新文章

  1. sqlhelper使用指南
  2. 2018 SaaS应用大会 掀起SaaS应用新浪潮
  3. DOS MD命令三种用法
  4. 通过SCCM部署Office365应用
  5. Git复习(十二)之命令专场
  6. 8. Dropout and Strides For Larger Models
  7. Swarm的进化和大规模应用
  8. javascript--this机制
  9. 伺服电机(舵机)简单介绍
  10. 6大关键词解析儿童学习桌消费市场
  11. 转:人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水...
  12. Tony Bai带你入门Go语言
  13. android 手机录屏功能,手机自带录屏功能在哪里找?轻松搞定屏幕录制
  14. kettle carte子服务器的使用
  15. 机器人运动学---雅克比矩阵伪逆
  16. ebay的api的开发技术笔记
  17. windows10 添加键盘音效
  18. 1.什么是Cython
  19. 硬件描述语言(HDL)
  20. 使用过滤器做一个过滤敏感词实例

热门文章

  1. Python中的string和bytes的转换
  2. 微信小程序rich-text富文本图片
  3. c语言中ipv6地址比较大小,ipv6地址处置
  4. css绘制梯形图形,及显示矩形图片
  5. AD7606八通道AD采集模块测试
  6. python 处理大量数据_如何用python处理大量数据
  7. A Retinex based GAN Pipeline to Utilize Paired and Unpaired Datasets for Enhancing Low Light Images
  8. 手把手教你使用wordpress搭建个人网站
  9. ssm药品大全网站的设计与实现毕业设计源码281128
  10. iOS之支持https与ssl双向验证(包含:解决UIWebView加载不了https网页的图片,css,js等外部资源)