Maven构建的Java8应用升级Java11报invalid target release错误如何解决
问题排查与解决方案
一、排查maven-compiler-plugin引入来源的方法
- 执行
mvn help:effective-pom,输出内容会展示最终生效的全量POM配置,直接搜索maven-compiler-plugin就能看到版本和对应的继承来源。 - 执行
mvn dependency:tree -Dincludes=org.apache.maven.plugins:maven-compiler-plugin -Dscope=plugin,可以直接输出该插件的依赖引入链路,明确是哪个父POM或者依赖组件引入的对应版本。
二、实际报错原因
你遇到的报错和maven-compiler-plugin 3.8.1的兼容性无关,该版本完全支持Java 11编译。报错的核心原因是Java版本号的写法错误:Java 8及之前的版本号采用1.x格式(例如Java 8对应1.8),从Java 9开始版本号直接使用主版本号命名,Java 11对应的正确版本号是11,而非1.11,你配置的1.11无法被编译器识别,才触发了invalid target release的错误。
三、解决方案
- 修改POM中的版本号配置,将properties节点下的
java.version值改为11:
<properties> <java.version>11</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> <!-- 建议额外新增release参数,避免环境变量中不同JDK版本的影响 --> <maven.compiler.release>${java.version}</maven.compiler.release> </properties>
- (可选)显式声明maven-compiler-plugin版本,避免后续父POM更新带来的版本变动:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin> </plugins> </pluginManagement> </build>
- 验证本地Maven绑定的JDK版本,执行
mvn -v检查输出的Java版本是否为11,若不符合需要调整JAVA_HOME环境变量指向Java 11的安装路径。
内容的提问来源于stack exchange,提问作者hotmeatballsoup
相关产品推荐
相关产品推荐

