项目场景:
提示:为了改造项目决定用开源代码进行改造,适配jdk21:
导入yudao-cloudjdk17版本的后端代码,改版本为21后编译爆错,所有涉及到jdk版本的地方都改为了21
问题描述
导入yudao-cloudjdk17版本的后端代码,改版本为21后编译爆错
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:compile (default-compile) on project yudao-common: Fatal error compiling: 错误: 无效的目标发行 版:1.21 -> [Help 1]
搜索全项目也没找到1.21
检查了jdk版本也是21
<maven.compiler.compilerVersion>${java.version}</maven.compiler.compilerVersion>原因分析:
提示:这里填写问题的分析:
maven.compiler.compilerVersion 是一个已废弃的旧版参数,用于 Maven Compiler Plugin 2.x 时代。它的版本号格式是旧式的 1.x(如 1.5、1.6、1.8)。
当您设置 <maven.compiler.compilerVersion>21</maven.compiler.compilerVersion> 时,Maven Compiler Plugin 会自动在前面加上 1. 前缀,变成了 1.21
解决方案:
提示:这里填写该问题的具体解决方案:
打开根 pom.xml,找到 部分,删除 compilerVersion 这一行:
<properties><revision>2026.06-SNAPSHOT</revision><java.version>21</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><!-- ❌ 删除下面这行 --><!-- <maven.compiler.compilerVersion>${java.version}</maven.compiler.compilerVersion> --><maven.compiler.release>${java.version}</maven.compiler.release></properties>修改后, 应该是这样:
<properties><revision>2026.06-SNAPSHOT</revision><java.version>21</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><maven.compiler.release>${java.version}</maven.compiler.release></properties>在结尾新增了这个配置就可以正常编译了知识补充:
mvn compile:只编译代码,不打包、不入本地库
mvn package:打包,产物在 target,不能给其他模块依赖
mvn install:打包 + 存入本地 Maven 仓库(多模块开发必用)
mvn clean install:先清理旧文件,再完整构建并安装到本地库(日常最常用)
mvn deploy:推送到远程私服
知识补充:
Profile 能配置哪些内容?
编译版本(source/target,你当前场景)
不同环境数据库配置(dev/test/prod)
切换私服仓库地址
按需引入 / 排除依赖
自定义打包参数、资源文件过滤