java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot配置jar打包和war打包

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

作者:一直到老到直一

在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文件可能是一个可行的选择。

总结

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

您可能感兴趣的文章:
阅读全文