Spring Boot + Angular 2 Heroku 部署
Posted
技术标签:
【中文标题】Spring Boot + Angular 2 Heroku 部署【英文标题】:Spring boot + angular 2 Heroku deployment 【发布时间】:2017-12-03 12:53:44 【问题描述】:我有一个大问题。我正在尝试在 heroku 上部署 Spring Boot + Angular 2 Web 应用程序,但不知道该怎么做。我尝试了几件事,包括:
制作 .war 文件并将其部署到 heroku(来源 here)
将项目部署为标准 java 应用程序(来源 here)
但这些都不起作用。第一次尝试没有奏效,因为我经常找不到 404,而第二次尝试没有奏效,因为我认为在 Procfile 中描述的位置找不到一些 jar 文件。 任何人都可以给我一个链接,一个例子,或者写一个逐步说明如何实现这一点。谢谢你。
【问题讨论】:
【参考方案1】:最简单的方法:
-
在 Angular 2 项目根目录中运行
ng build
(如果您使用 angular-cli)并将 dist 文件夹的内容复制到 src/main/resources/static/。
创建 Procfile(用于 maven):
网络:java $JAVA_OPTS -Dserver.port=$PORT -jar 目标/*.jar
提交并推送更改。
此外,您需要 spring-boot-starter-web 存在于依赖项中。其中嵌入了 tomcat 并自动配置为从静态文件夹中提供静态内容。
【讨论】:
这里的问题是我的dist文件夹没有生成。 @kantagara,如果您使用angular-cli 生成了一个角度项目,那么一切都应该正常工作。运行:ng new project_new --ng4 @kantagara 你也会发现this很有用。 非常感谢您的解决方案。我找不到我的 dist 文件夹没有生成的确切原因,所以我创建了全新的 angular 项目,安装了所有必需的依赖项并将我的所有源文件传输到该项目。之后我运行 ng build 并生成 dist 文件夹。我遇到的下一个问题是没有从 spring 中得到任何 404 not found 错误,但我使用这里描述的解决方案 ***.com/questions/38516667/… 处理了这个问题。【参考方案2】:使用 JHipster:https://jhipster.github.io
安装后,运行:
$ yo jhipster
然后运行
$ yo jhipster:heroku
【讨论】:
谢谢。但老实说,这对于现有项目的部署来说似乎工作量太大。还是我错了?【参考方案3】:如果您将应用程序部署为标准 Java 应用程序,则可以将其与 Node.js 构建包结合起来,在 Heroku 构建期间运行 ng build
。
$ heroku buildpacks:add heroku/nodejs
$ heroku buildpacks:add heroku/java
$ git push heroku master
Node.js 构建包将检测您的 package.json
,安装 Node.js 并运行 npm
。然后 Java 构建就可以正常进行了。
有一个指南可以用 Grunt 做一些非常相似的事情:Using Grunt with Java and Maven to Automate javascript Tasks
【讨论】:
以上是关于Spring Boot + Angular 2 Heroku 部署的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2 + CORS + 带有 Spring Security 的 Spring Boot Rest Controller
maven - Spring Boot/Angular 2/4 项目战构建
Spring Boot + Angular 2 Heroku 部署