将基于 Maven 的 Spring Boot 应用程序打包为 WAR 文件
要更改使用Spring Initializr或Vaadin Start工具生成的基于Maven的 Spring Boot 应用程序中的打包,请在 pom.xml 文件中进行以下更改:
1、修改<packaging>元素如下:
XML:
<packaging>war</packaging>
2. 如果您计划部署到与 Apache Tomcat 不同的服务器,请执行以下操作:
a) 将 Servlet API 依赖项添加到项目中。确保使用与您的项目匹配的版本。例如,在Vaadin应用程序的情况下:
XML:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
b)如果您使用的是Spring MVC,spring-boot-starter-tomcat则从 中排除依赖项,或者如果您使用的是Vaadin则从该依赖项中排除。例如:spring-boot-starter-web dependencyvaadin-spring-boot-starter
XML:
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
<exclusions>
...
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3. 可选:如果您想简化 WAR 文件的名称并始终构建一个同名但没有版本号的文件,请在该<build>
部分添加以下内容:
XML:
<finalName>${project.artifactId}</finalName>
4. 通过运行mvn package命令构建和打包应用程序。如果您使用 Vaadin,请启用生产配置文件 ( mvn package -P production)。您可以在 Maven 项目内的target/目录中找到 WAR 文件。
将 WAR 文件部署到 Apache Tomcat
要将上一节中配置的应用程序部署到 Apache Tomcat 的本地实例:
- 从项目网站下载 Apache Tomcat 。确保下载正确的版本,具体取决于您的应用程序使用的 Java 和 Servlet API 版本。例如,对于 Vaadin 应用程序,下载 Apache Tomcat 版本 9。
- 提取下载的文件。
- 通过运行可以在Apache Tomcat 安装目录内的bin/目录中找到的start.sh或start.bat脚本来启动服务器。您可能必须向bin/目录中的脚本文件添加执行权限。例如,在类 Unix 操作系统中,运行.chmod +x bin/*.sh
- 将 WAR 文件从Maven 项目内的target/目录复制到Apache Tomcat 安装目录内的webapps/目录。
- 该应用程序应自动部署并在http://localhost:8080/your-war-file-name 上提供。如果要部署到上下文的根 ( http://localhost:8080/ ),请使用 ROOT.war 。
将 WAR 文件部署到 Eclipse Jetty
要将先前配置的应用程序部署到 Eclipse Jetty 的本地实例:
- 从项目网站下载 Eclipse Jetty 。确保下载正确的版本,具体取决于您的应用程序使用的 Java 和 Servlet API 版本。例如,对于 Vaadin 应用程序,下载 Eclipse Jetty 9。
- 提取下载的文件。
- 如果您下载了 Eclipse Jetty 10,请通过java -jar start.jar --add-module=server,http,deploy在 Eclipse Jetty 安装目录中运行来配置服务器。
- 通过在 Eclipse Jetty 安装目录内的bin/目录中运行start.sh start 来启动服务器。您可能必须通过运行来为bin/目录中的脚本文件添加执行权限。chmod +x bin/*.sh
- 将 WAR 文件从Maven 项目内的target/目录复制到Eclipse Jetty 安装目录内的web apps /目录。
- 应用程序应自动部署并在此处可用。如果要部署到上下文 root ,请使用 root.war 。