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

相关文章
|
5月前
|
安全 Java 持续交付
如何实现上传jar直接部署成功,这篇文章直接带你上手springboot实现jar包热更新!
本文详细讲解了在Spring Boot应用中实现Jar包热更新的实践方法。通过自定义类加载器(`HotClassLoader`),动态加载和卸载指定目录下的Jar包,结合Spring Bean动态注册机制,使新加载的类能够被Spring容器管理。同时,提供了文件上传接口,方便用户手动触发Jar包更新。文章还强调了安全性、依赖管理和线程安全等注意事项,并给出了测试步骤和总结,帮助开发者高效实现热更新功能,减少服务中断和提升开发效率。
|
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 内部配置。
404 17
SpringBoot-打包&部署
|
5月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
375 70
|
7月前
|
Java 应用服务中间件 Maven
SpringBoot项目打包成war包
通过上述步骤,我们成功地将一个Spring Boot应用打包成WAR文件,并部署到外部的Tomcat服务器中。这种方式适用于需要与传统Servlet容器集成的场景。
482 8
|
8月前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的高校食堂移动预约点餐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
2月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
725 0