java - 带有角度前端的 Spring Boot 后端
问题描述
我已经创建了一个 spring boot 后端和一个 angular 前端,现在我想使用 sprint boot 在 8080 上运行,其主页显示 index.html(来自 angular)。
我已经使用 ng build --prod 命令在 Angular 中创建了 dist 文件夹并复制到 (src/main/resources/static) 文件夹中。在此处输入图像描述
除此之外,我阅读了许多关于此的stackoverflow帖子并尝试通过添加来创建war文件
<packaging>war</packaging>
在 pom.xml 中(虽然我不知道如何创建战争)实际上它在目标文件夹中创建了一个战争文件(AIeDD-0.0.1-SNAPSHOT)。一些帖子说要在tomcat服务器上部署战争,但我不知道该怎么做。
现在我不知道现在该怎么办??
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cdac</groupId>
<artifactId>AIeDD</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>AIeDD</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
解决方案
与所有 Spring-Applications 一样,您基本上有两个选择。您可以将其打包为 war(没有捆绑的应用程序服务器)并将其部署在一个上。或者您可以将其打包为 jar(所谓的 fat-jar)并与捆绑的应用程序服务器一起交付。默认的是tomcat。
然后你可以保持你的构建过程:创建一个 dist 文件夹并将内容复制到你的资源文件夹中。然后,您拥有的控制器只是将文件的“路径”作为字符串返回。另一种方法是使用名为“buildfrontend-maven-plugin”的具体 maven 插件。有了这个,你就可以构建你的 jar,而 maven 负责构建 Angular 应用程序。
推荐阅读
- javascript - 从数组中的项目计算一个数字,然后使用 Array.prototype.reduce() 获得这些数字的总和?(Javascipt)
- javascript - 通过过滤它的嵌套大小变体返回数组对象
- node.js - 在 linux manjaro 上安装 gulp-sass 时出错
- c# - 属性是否在使用 FlientValidation 的表达式 x => x.AccountNumber.ToString() 中丢失了元数据?
- javascript - 我想用 .sort() 重新列出我的状态,但 React.js 没有任何变化
- azure - 缺少 Azure Maven 任务输出
- python - 异常机制在一段时间后不起作用
- postgresql - 如何在 Lambda 函数中使用 Powershell 连接到 RDS PostgreSQL 数据库?
- colors - Vega Lite:条形图的色标
- python - 电影推荐系统:为每部电影找到评分者评分的电影