SpringBoot配置jar打包和war打包过程

 更新时间:2026年05月17日 10:03:27   作者:一直到老到直一  
在SpringBoot项目中,默认打包为可执行JAR文件,若需打包为WAR文件以部署在Servlet容器中,则需修改pom.xml的`<packaging>`为`war`,排除内置Servlet容器,添加SpringBootServletInitializer配置主类,并构建项目生成WAR文件,此过程虽非SpringBoot推荐,但能满足特定需求

在Spring Boot项目中,可以通过修改pom.xml文件来配置项目打包成JAR或WAR文件。Spring Boot应用默认打包成可执行的JAR文件,但如果想要将其打包成WAR文件以便部署到传统的Servlet容器中(如Tomcat),需要做一些额外的配置。

打包成JAR

对于大多数Spring Boot应用来说,默认配置(即不打任何特殊配置)就会生成一个可执行的JAR文件。这个JAR文件包含了应用的所有依赖、类文件、资源文件以及一个嵌入式的Servlet容器(如Tomcat、Jetty或Undertow)。

如果想要确认或确保应用是打包成JAR文件,可以检查pom.xml文件中的<packaging>标签是否设置为jar(这通常是默认的):

<packaging>jar</packaging>

打包成WAR

如果想要将Spring Boot应用打包成WAR文件,以便部署到外部的Servlet容器中,需要做以下几步配置:

1. 修改<packaging>为war

pom.xml文件中,将<packaging>标签的值从jar改为war

<packaging>war</packaging>

2. 排除内置的Servlet容器

由于WAR文件将部署到一个外部的Servlet容器中,需要从项目的依赖中排除内置的Servlet容器(如Tomcat、Jetty)。这可以通过在pom.xml中添加<exclusions>来实现。

对于Tomcat,可以添加如下配置到你的spring-boot-starter-web依赖中(或者任何包含嵌入式Servlet容器的starter):

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-web</artifactId>  
    <exclusions>  
        <exclusion>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-tomcat</artifactId>  
        </exclusion>  
    </exclusions>  
</dependency>

注意:如果使用的是其他嵌入式Servlet容器(如Jetty或Undertow),需要排除相应的starter。

3.配置Spring Boot的主类

当打包成WAR文件时,Spring Boot不会自动运行主类(即带有@SpringBootApplication注解的类)。相反,需要创建一个继承自SpringBootServletInitializer的类,并重写configure方法来指定Spring Boot的主类。

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

public class ServletInitializer extends SpringBootServletInitializer {  

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

YourSpringBootApplication替换为主类名。

4.(可选)配置Servlet容器

如果使用的是特定的Servlet容器(如Tomcat),并且需要对其进行额外的配置,可能需要在pom.xml中添加相应的Servlet容器依赖,并确保它的版本与Servlet容器版本兼容。然而,在大多数情况下,这一步是可选的,因为大多数Servlet容器都会自动处理这些配置。

5.构建项目

在命令行中,使用Maven的package命令来构建你的项目:

mvn clean package

这将生成一个WAR文件,可以将其部署到任何支持Servlet 3.0的容器中。

注意:

将Spring Boot应用打包成WAR文件并不是Spring Boot推荐的部署方式,因为Spring Boot的设计初衷是为了简化部署和配置。然而,如果有特殊的需求(如与现有系统集成),将应用打包成WAR文件可能是一个可行的选择。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java聊天室之使用Socket实现通信功能

    Java聊天室之使用Socket实现通信功能

    这篇文章主要为大家详细介绍了Java简易聊天室之使用Socket实现通信功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以了解一下
    2022-10-10
  • Java使用POI库快速生成Word文档的方法详解

    Java使用POI库快速生成Word文档的方法详解

    这篇文章主要介绍了Java使用POI库快速生成Word文档的方法,Java POI库是一个开源的Java库,能够用来读写Microsoft Office格式的文件,尤其在处理文档和电子表格方面功能强大,需要的朋友可以参考下
    2025-10-10
  • RestTemplate的URL请求示例

    RestTemplate的URL请求示例

    这篇文章主要为大家介绍了RestTemplate的URL请求示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Java数组创建的3种方法6种写法代码示例

    Java数组创建的3种方法6种写法代码示例

    这篇文章主要给大家介绍了关于Java数组创建的3种方法6种写法,在Java中我们可以使用关键字new来创建一个数组,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • SpringMVC使用自定义验证器进行数据验证的方法

    SpringMVC使用自定义验证器进行数据验证的方法

    SpringMVC 提供了强大的数据验证机制,可以方便地验证表单提交的数据,除了自带的验证器之外,SpringMVC 还支持自定义验证器,允许开发者根据业务需求自定义验证规则,本文将介绍如何在 SpringMVC 中使用自定义验证器
    2023-07-07
  • java多态实现电子宠物系统

    java多态实现电子宠物系统

    这篇文章主要为大家详细介绍了java多态实现电子宠物系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 流式图表拒绝增删改查之框架搭建过程

    流式图表拒绝增删改查之框架搭建过程

    这篇文章主要为大家介绍了流式图表拒绝增删改查之框架搭建过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java中使用辗转相除法求最大公约数

    Java中使用辗转相除法求最大公约数

    这篇文章主要介绍了Java中使用辗转相除法求最大公约数,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05
  • 深入理解Java 线程池

    深入理解Java 线程池

    这篇文章主要介绍了Java 线程池的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Spring中@Controller与@RestController核心解析实战指南

    Spring中@Controller与@RestController核心解析实战指南

    本文系统解析了Spring MVC中@Controller、@RestController和@RequestMapping的核心功能与最佳实践,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-11-11

最新评论