如何将 Spring Boot 应用程序部署为 WAR?

简介: 如何将 Spring Boot 应用程序部署为 WAR?

Spring Boot 是一个用于创建独立的、生产级别的基于 Spring 框架的应用程序的框架。它简化了 Spring 应用的初始设置和开发过程。虽然 Spring Boot 默认支持创建可执行的 JAR 文件,但有时为了适应现有的基础设施或满足特定需求,开发者可能需要将 Spring Boot 应用程序打包成 WAR 文件并部署到传统的 Servlet 容器中,如 Apache Tomcat。

本文将详细介绍如何将一个 Spring Boot 应用程序转换为 WAR 文件,并成功部署到 Tomcat 服务器上。

1. 创建 Spring Boot 项目

首先,我们需要创建一个基础的 Spring Boot 项目。你可以使用 Spring Initializr (https://start.spring.io/) 来快速生成项目结构。选择 Maven 或 Gradle 作为构建工具,并确保包含 Web 和其他必要的依赖项。

2. 修改项目结构以支持 WAR 包

默认情况下,Spring Boot 项目被配置为生成 JAR 文件。要将其转换为 WAR 文件,需要进行以下更改:

  • 修改 pom.xml (Maven) 或 build.gradle (Gradle)

对于 Maven 项目,打开 pom.xml 文件,将 <packaging> 标签的值从 jar 改为 war

<packaging>war</packaging>

对于 Gradle 项目,打开 build.gradle 文件,添加以下配置:

apply plugin: 'war'
  • 配置 Spring Boot 的主类

Spring Boot 需要知道哪个类是启动类。如果您的应用程序是 WAR 包,您需要继承 SpringBootServletInitializer 并重写 configure 方法。这样可以确保当应用程序作为 WAR 包部署时,Spring Boot 可以正确地初始化。

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class Application extends SpringBootServletInitializer {
   

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
   
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
   
        SpringApplication.run(Application.class, args);
    }
}

3. 移除内嵌的 Servlet 容器依赖

由于我们打算将应用程序部署到外部的 Servlet 容器中,因此需要移除内嵌的 Servlet 容器依赖(例如 Tomcat)。对于 Maven 项目,可以在 pom.xml 中将 spring-boot-starter-tomcat 的范围设置为 provided

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

对于 Gradle 项目,可以在 build.gradle 中添加:

dependencies {
   
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}

4. 构建 WAR 文件

现在,您可以使用 Maven 或 Gradle 构建工具来构建 WAR 文件。对于 Maven,运行以下命令:

mvn clean package

对于 Gradle,运行以下命令:

gradle clean war

构建完成后,您将在 target(Maven)或 build/libs(Gradle)目录下找到生成的 WAR 文件。

5. 部署 WAR 文件到 Tomcat

将生成的 WAR 文件复制到 Tomcat 的 webapps 目录下。然后启动 Tomcat 服务器。Tomcat 将自动检测新的 WAR 文件并部署它。

cd /path/to/tomcat/bin
./startup.sh

访问 http://localhost:8080/your-app-name 来检查应用程序是否成功部署。

结论

通过上述步骤,您可以轻松地将一个 Spring Boot 应用程序转换为 WAR 文件并部署到 Tomcat 服务器上。这种方式不仅保持了 Spring Boot 的便捷性和灵活性,还使得应用程序能够与现有的基于 Servlet 容器的基础设施无缝集成。希望本文能帮助您顺利完成这一过程。

相关文章
|
7天前
|
XML Java 应用服务中间件
SpringBoot-打包&部署
SpringBoot 项目支持两种打包方式:WAR 包和 JAR 包。JAR 包内置 Tomcat,可直接运行;WAR 包需部署在外部 Tomcat 上。JAR 包通过 `mvn clean package` 打包并用 `java -jar` 运行,支持后台运行和 JVM 参数配置。WAR 包需修改 pom.xml 为 war 类型,移除嵌入式 Tomcat 依赖,添加 servlet-api,并继承 `SpringBootServletInitializer`。配置文件可通过外部 application.yml 覆盖,默认优先级高于 JAR 内部配置。
46 17
SpringBoot-打包&部署
|
26天前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
57 8
|
26天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的高校食堂移动预约点餐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
70 3
|
26天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
45 0
|
26天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
38 2
|
26天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
67 6
|
26天前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
57 6
|
26天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
40 4
|
28天前
|
XML Java 应用服务中间件
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
131 64
SpringBoot项目打war包流程
|
29天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
231 17
Spring Boot 两种部署到服务器的方式