Heroku部署Spring Boot项目遇maven-compiler-plugin编译错误求助
解决Heroku部署Spring Boot项目时的Maven编译错误(invalid flag: --release)
错误根源分析
这个错误的核心是Java版本与Maven编译器插件的配置不兼容:
--release是Java 9及以上版本才支持的编译参数,若编译环境用的是Java 8或更低版本,就会触发该错误。- 你的pom.xml存在多处版本冲突和配置混乱:
- 声明了
java.version=17,但同时设置maven.compiler.source/target=12,还在compiler插件里硬编码为1.8,版本完全不一致。 - Spring Boot 3.1.5要求最低Java 17,但你引入的
spring-boot-starter-security用了3.0.4版本,和父依赖版本不匹配。 - Maven编译器插件配置放在
pluginManagement中,可能未被实际执行,导致Spring Boot自动注入的编译配置和手动配置冲突。
- 声明了
修复步骤
1. 统一Java版本配置
删除pom中冗余的maven.compiler.source和maven.compiler.target,只保留java.version=17,Spring Boot会自动继承正确的编译配置:
<properties> <java.version>17</java.version> </properties>
2. 移除手动配置的Maven编译插件
Spring Boot的父依赖已经提供了适配的maven-compiler-plugin版本,不需要手动在pluginManagement中配置,直接删除这部分:
<!-- 删除这段配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.12.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
3. 修复Spring Security依赖版本
Spring Boot 3.1.5对应的Spring Security版本是6.1.5,不要手动指定3.0.4,让父依赖自动管理版本:
<!-- 修改前 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> <version>3.0.4</version> </dependency> <!-- 修改后 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
4. 指定Heroku使用的JDK版本
在项目根目录创建system.properties文件,明确告诉Heroku使用Java 17:
java.runtime.version=17
5. 重新部署
清理本地Maven缓存,然后重新推送:
mvn clean install git add . git commit -m "Fix Java version and Maven config" git push heroku main
验证配置
修改后的pom.xml核心部分示例:
<properties> <java.version>17</java.version> </properties> <dependencies> <!-- ... 其他依赖保持不变 ... --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- ... 其他依赖保持不变 ... --> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.1.5</version> </plugin> </plugins> </pluginManagement> </build>
内容的提问来源于stack exchange,提问作者Lolo
相关产品推荐
相关产品推荐

