用户应用和框架 JAR 包版本冲突问题

该问题通常会抛出NoSuchMethodError/ClassNotFoundException/Incom patibleClassChangeError 等异常,要解决此类问题:

  1. 首先需要根据异常类定位依赖库,然后可以在项目中执行 mvn dependency:tree 以树形结构展示全部依赖链,再从中定位冲突的依赖库,也可 以增加参数 -Dincludes 指定要显示的包,格式为 [groupId]:[artifactId]:[- type]:[version],支持匹配,多个用逗号分隔,例如:mvn dependency:tree -Dincludes=power,javaassist;
  2. 定位冲突包后就要考虑如何排包,简单的方案是用 exclusion 来排除掉其 从他依赖项目中传递过来的依赖,不过有的应用场景需要多版本共存,不同 组件依赖不同版本,就要考虑用 Maven Shade 插件来解决,详情请参考 Maven Shade Plugin。