文章目录
- 1. 前言
- 2. 组件版本信息
- 3. 事件经过
- 3.1 本地通过maven命令打包
- 3.2 定位问题步骤
- 3.2.1 核对spring-boot-maven-plugin版本信息
- 3.2.2 spring-boot-maven-plugin版本错误原因
- 3.3 解决方案
- 4.结论
1. 前言
我们在平时开发过程中关注的比较多的是项目开发时依赖包的版本以及兼容性问题,而编译、打包时各种插件以及 版本信息关注得相对较少,那么你有没有踩过编译打包的坑呢,本文将详细介绍一次因为编译、打包时没有指定 spring-boot-maven-plugin插件版本而导致编译、打包任务失败的事件,希望能够帮助各位在后续的工作中避坑。
2. 组件版本信息
JDK 1.8
SpringBoot 2.3.7.RELEASE
SpringCloud Hoxton.SR12
3. 事件经过
3.1 本地通过maven命令打包
直接在IDEA中执行打包命令或者命令行执行mvn clean install
报错文本信息如下:
org/springframework/boot/maven/RepackageMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
报错大概意思:
org/springframework/boot/maven/RepackageMojo 是通过JDK17编译的,而本地java运行时最高能 支持JDK8版本
class文件中版本号与JDK版本对应关系:
52.0 -> JDK8
61.0 -> JDK17
3.2 定位问题步骤
3.2.1 核对spring-boot-maven-plugin版本信息
通过控制台报错信息:
org.springframework.boot:spring-boot-maven-plugin:3.2.1:repackage (repackage)判定 当前repackage使用的spring-boot-maven-plugin版本是3.2.1
而spring-boot 3.2.1版本要求JDK版本为17
当前工程使用的JDK版本为1.8,版本太低
3.2.2 spring-boot-maven-plugin版本错误原因
- 查看pom中引用的spring-boot-maven-plugin版本
- IDEA中查看spring-boot-maven-plugin版本为unknown
因为当前工程没有指定spring-boot-maven-plugin的版本,所以工程默认使用了
仓库中最新的版本3.2.1,导致打包失败
3.3 解决方案
为工程指定与spring-boot版本匹配的spring-boot-maven-plugin,重新加载依赖
4.结论
在平时的项目开发中要注意工程中各种插件版本与工程中其他组件版本的兼容性问题, 避免因一时疏忽带来不必要的麻烦,就像此篇文章中提到的,spring-boot-maven-plugin 版本要和工程中spring-boot版本保持一致。