如何将 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 容器的基础设施无缝集成。希望本文能帮助您顺利完成这一过程。

相关文章
|
25天前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
31 6
|
25天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
45 5
|
24天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
29 2
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
186 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
118 62
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
74 13
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
92 2
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
239 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统