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

相关文章
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
9755 60
|
29天前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
130 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
1月前
|
XML Java 测试技术
使用 Spring 的 @Import 和 @ImportResource 注解构建模块化应用程序
本文介绍了Spring框架中的两个重要注解`@Import`和`@ImportResource`,它们在模块化开发中起着关键作用。文章详细分析了这两个注解的功能、使用场景及最佳实践,帮助开发者构建更清晰、可维护和可扩展的Java应用程序。
137 0
|
3月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
365 13
|
6月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
402 70
|
3月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
|
22天前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
134 4
基于springboot+vue开发的会议预约管理系统
|
5月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
471 1
|
6月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
433 7
|
2月前
|
前端开发 JavaScript Java
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
本系统基于SpringBoot与Vue3开发,实现校园食堂评价功能。前台支持用户注册登录、食堂浏览、菜品查看及评价发布;后台提供食堂、菜品与评价管理模块,支持权限控制与数据维护。技术栈涵盖SpringBoot、MyBatisPlus、Vue3、ElementUI等,适配响应式布局,提供完整源码与数据库脚本,可直接运行部署。
102 0
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】