【JAVA】SpringBoot项目打jar包变为打war包

467 阅读1分钟

        SpringBoot开发的项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了,这篇文章主要介绍了SpringBoot项目如何打包成war包,需要的朋友可以参考:

image.png

一、修改 pom.xml 文件

        首先需要修改pom.xml文件来更改打包的方式。默认情况下SpringBoot的打包方式是jar,但要打成WAR包需要将其改为war。如图所示:

<!--  <packaging>jar</packaging>-->
<packaging>war</packaging>

        排除SpingBoot内置的tomcat,意思是不将内置的tomcat打包到war包中。

<!--web依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <!-- 打war包排除内置的tomcat -->
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
  </exclusions>
</dependency>

        添加tomcat依赖,需要用到 servlet-api 的相关 jar 包

<!--添加tomcat依赖打war包需要-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <!-- tomcat范围改成provided,否则后面就会出问题,tomcat无法解析jsp -->
  <scope>provided</scope>
</dependency>

二、 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法

        我这里的主类是BigEventApplication,需要extends SpringBootServletInitializer继承,并重写configure方法。

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


@SpringBootApplication
public class BigEventApplication extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(BigEventApplication.class);
    }

    public static void main( String[] args )
    {
        SpringApplication.run(BigEventApplication.class,args);
    }
}

三、执行清理和打包指令

        这里可以在控制台执行清理打包命令,也可如图片所示,使用maven提供的工具通过点击进行清理、打包。

mvn clean package

image.png

四、然后。。。。。。

        然后就没有然后了,嘿嘿嘿~