Spring Boot+Angular全栈项目Heroku部署失败求助
问题1:启动时报错找不到主类
解决办法:
- 核对Spring Boot主类的包路径与
pom.xml中spring-boot-maven-plugin的mainClass配置是否完全一致。例如主类为com.example.demo.Application,插件需配置:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.demo.Application</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
- 检查项目根目录的
Procfile,确保启动命令指向正确的jar包,示例:
web: java -jar target/your-project-name-0.0.1-SNAPSHOT.jar
- 确保maven打包时执行
spring-boot:repackage目标,Heroku默认执行mvn clean install,需在pom中绑定该目标的执行逻辑。
问题2:frontend-maven-plugin安装Node/npm权限错误
解决办法:
- 修改插件配置,将Node/npm安装目录指定为项目本地目录,避开系统级目录权限限制:
<plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.12.0</version> <configuration> <installDirectory>./</installDirectory> <nodeVersion>v18.17.0</nodeVersion> <npmVersion>9.6.7</npmVersion> </configuration> <executions> <!-- 保留你的npm install、ng build等执行步骤 --> </executions> </plugin>
- 在项目根目录创建
system.properties文件,指定Java运行时版本(匹配Spring Boot支持版本):
java.runtime.version=17
同时在插件配置中添加参数,避免使用高权限操作:
<plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <configuration> <arguments>install --no-audit</arguments> </configuration> </plugin>
- 确认Angular项目的
package.json位置(如src/main/frontend),并在插件配置中指定工作目录:
<configuration> <workingDirectory>src/main/frontend</workingDirectory> </configuration>
建议先在本地执行mvn clean install模拟Heroku构建流程,提前排查是否存在同类问题。
内容的提问来源于stack exchange,提问作者Someone
相关产品推荐
相关产品推荐

