shade

包冲突,现在碰到这样一个问题,如下图,

  1. a依赖b,b依赖c的c1方法
  2. a依赖c的c2方法
  3. 但是c1.0没有c2方法,c2.0没有c1方法

原因

jvm在加载类时,只会根据包名去加载类,如果一个方法调用了一个类的两个版本,而这两个版本是互相冲突的话,就会抛异常NoSuchMehtodError

解决办法

maven-shade 把其中一个用shade改名,改名的类的包名会变,所以再加载两个不同方法时就是加载的两个不同的类,所以不会报错

<!-- shade-a: pom.xml -->
<dependencies><dependency><groupId>com.test</groupId><artifactId>shade-c</artifactId><version>2.0</version></dependency><dependency><groupId>com.test</groupId><artifactId>shade-b</artifactId><version>1.0</version></dependency>
</dependencies>
<!-- shade-b: pom.xml -->
<dependencies><dependency><groupId>com.test</groupId><artifactId>shade-c</artifactId><version>1.0</version></dependency>
</dependencies>
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><relocations><relocation><pattern>com.test.shade-c</pattern><shadedPattern>shaded.com.test.shade-c</shadedPattern></relocation></relocations></configuration></execution><executions></plugin><plugins>
</build>
ref

解决jar包冲突新思路 - maven-shade-plugin

maven shade相关推荐

  1. [Apache Maven Shade Plugin] [example] [001] 官方例子:includes-excludes

    链接地址:[Selecting Contents for Uber JAR](http://maven.apache.org/plugins/maven-shade-plugin/examples/i ...

  2. maven shade 插件的小插曲

    前两天我们介绍了 maven 解决冲突的 shade 插件 https://blog.csdn.net/u012745499/article/details/122310575 然而, 昨天业务方反馈 ...

  3. Apache Maven Shade插件详解

    Apache Maven项目提供的Shade插件,能够将Maven应用打包为超级的uber-jar(也称为fat jar,或shaded jar).即在打包的过程中,可以: 包含依赖库 重命名依赖库的 ...

  4. java插件不存在,java – Maven shade插件找不到’mainClass’异常?

    有一个非常奇怪的构建与maven-shade-plugin:2.4.3在一个标准的maven项目中.执行maven package命令时,总是无法找到mainClass异常.我只是模拟一个maven- ...

  5. Maven的生命周期和maven-assembly-plugin插件使用

    2019独角兽企业重金招聘Python工程师标准>>> 记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译, ...

  6. 使用Maven打包你的应用——maven-jar-plugin maven-assembly-plugin maven-shade-plugin

    原文链接:https://www.dubby.cn/detail.html?id=9091 介绍maven-jar-plugin,maven-assembly-plugin和maven-shade-p ...

  7. 使用Maven构建Java项目

    使用Maven构建Java项目 本指南将引导您使用Maven构建一个简单的Java项目. 你会建立什么 您将创建一个提供一天中时间的应用程序,然后使用Maven进行构建. 你需要什么 约15分钟 最喜 ...

  8. 如何使用Maven创建具有依赖项的可执行JAR?

    我想将我的项目打包在一个可执行的JAR中进行分发. 如何使Maven项目将所有依赖项JAR打包到我的输出JAR中? #1楼 刘坚认为是对的. Maven依赖插件允许您扩展所有依赖,然后可以将其视为资源 ...

  9. Maven 高级玩法

    实用技巧 Maven 提速 多线程 # 用 4 个线程构建,以及根据 CPU 核数每个核分配 1 个线程进行构建 $ mvn -T 4 clean install $ mvn -T 1C clean ...

最新文章

  1. Codeforces Round #520 (Div. 2)
  2. jenkins+gradle/maven+sonar+pipline
  3. android 获取存储卡,Android获取存储卡路径的方式
  4. SAP MB51物料凭证清单程序增强增加四个字段
  5. Java上机操作练习题-助力期末
  6. CSS3的background-size:可以设置高宽 百分比 最大大小 最小大小
  7. 王道408数据结构——第八章 排序
  8. 【Python学习】 - 如何在Spyder中弹出plot绘图窗口而不是在Console中绘图
  9. Failed to connect to 127.0.0.1 port 1080: Connection refused package:git
  10. PowerEdge服务器生命周期控制器:Lifecycle Controller
  11. crontrigger java,CronTrigger
  12. tf.Variable、tf.get_variable、tf.variable_scope、tf.name_scope、random、initializer
  13. 关闭centos6.7不必要的服务
  14. 计算机组成原理(白中英) 第二章 课后题答案
  15. JavaScript权威指南学习笔记(一)
  16. 查看局域网所有ip地址
  17. vscode通过扩展插件实现流程图绘制
  18. 2月29日,四年一遇的日子!
  19. windows server 2003 远程拨号服务器
  20. 130292015015-傅志彬-第1章作业

热门文章

  1. Socket、Tcp、Udp 概念区分
  2. [BX] 和 loop指令
  3. register,static,extern,const,typedef,volatile关键字
  4. linux gt txt内容为空,2gt;/dev/null和gt;/dev/null 2gt;amp;1和2gt;amp;1gt;/dev/null的区别...
  5. matlab梯度检测,Matlab:关于梯度的一阶导数边缘检测
  6. cf两边黑屏怎么解决win10_win10开机无限黑屏转圈重启解决方法
  7. 数据结构与算法 / 总章
  8. Cpp 对象模型探索 / 不能被继承的类
  9. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
  10. linux中256错误,YUM安装遭遇: [Errno 256] No more mirrors to try