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

如何使用spring boot和angular 2登录

maven - Spring Boot/Angular 2/4 项目战构建

Spring Boot + Angular 2 Heroku 部署

Spring Boot 和 Angular 2 的 URL 处理问题

Angular 基本身份验证 Spring Boot