使用Heroku Maven Plugin部署Spring Boot应用报错求助
解决Heroku Maven插件部署Spring Boot应用报错“Error: -jar requires jar file specification”
这个问题我之前也碰到过,核心原因是你在processTypes里配置的启动命令用了本地构建的路径,但Heroku运行环境里的jar文件位置和本地不一样!
错误原因分析
当使用heroku-maven-plugin部署时,插件会自动把你在<includes>节点中指定的jar文件复制到Heroku应用的根目录,而不是保留本地的target/目录结构。你当前的启动命令里写的是:
<web>java $JAVA_OPTS -jar ${project.build.directory}/${project.build.finalName}.jar</web>
在Heroku的dyno运行环境中,根本不存在target/xxx.jar这个路径,系统找不到指定的jar文件,所以会抛出-jar requires jar file specification的错误。
解决方案
只需要修改processTypes中的启动命令,去掉本地构建目录的前缀,直接使用jar文件名即可:
<plugin> <groupId>com.heroku.sdk</groupId> <artifactId>heroku-maven-plugin</artifactId> <version>3.0.4</version> <configuration> <appName>${heroku.appName}</appName> <includeTarget>false</includeTarget> <includes> <include>${project.build.directory}/${project.build.finalName}.jar</include> </includes> <jdkVersion>${java.version}</jdkVersion> <processTypes> <!-- 修改这里:去掉${project.build.directory}/前缀 --> <web>java $JAVA_OPTS -jar ${project.build.finalName}.jar</web> </processTypes> </configuration> </plugin>
验证修改
重新执行部署命令:
mvn clean heroku:deploy
这次插件会把jar文件上传到Heroku应用根目录,启动命令也能正确找到jar文件,应用应该就能正常部署启动了。
内容的提问来源于stack exchange,提问作者forhas
相关产品推荐
相关产品推荐

