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

Heroku部署Java应用失败:maven-compiler-plugin报无效参数--release

解决Heroku部署Java应用时maven-compiler-plugin构建失败问题

问题原因分析

你遇到的invalid flag: --release错误核心是版本配置冲突与插件参数不兼容:

  • maven-compiler-plugin 3.11.0默认会使用--release参数指定编译版本,但该参数仅Java 9及以上版本支持;
  • pom.xml中同时配置java.version=11和maven.compiler.source/target=1.8,版本冲突导致插件尝试执行无效的--release 1.8指令;
  • 在application.properties中添加java.runtime.version=11是错误操作,Heroku不通过该文件识别JDK版本,因此会抛出无法解析的警告。

具体解决方案

方案1:统一使用Java 11编译和运行

调整pom.xml中的编译配置,确保版本统一:

<properties>
    <java.version>11</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>

同时在项目根目录创建system.properties文件,指定Heroku使用的JDK版本:

java.runtime.version=11

方案2:坚持使用Java 8编译(兼容旧版本)

若需编译为Java 8版本,需调整maven-compiler-plugin配置以规避--release参数:

  1. 降低插件版本至3.8.x(3.9及以上版本默认启用--release):
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <!-- 移除release相关配置 -->
    </configuration>
</plugin>
  1. 在system.properties中指定Heroku的JDK版本(可用Java 11兼容运行Java 8编译的代码,或直接指定1.8):
java.runtime.version=11

额外检查

  • 本地测试时,通过mvn -v查看当前Maven使用的JDK版本,确保与配置一致;
  • 提交代码前,先在本地执行mvn clean compile验证编译正常,再部署到Heroku。

内容的提问来源于stack exchange,提问作者Pedro Luiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:23:24