You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 17:42:23