springboot项目打war包流程

目前,前后端分离的架构已成主流,因此使用springboot构建应用是非常快速的,项目发布到服务器上的时候,只需要打成一个jar包,然后通过命令 : java -jar jar包名称即可启动服务了;

但在有些场景下,比如部署到外部的服务器的时候,客户方指定要以tomcat的形式启动服务的时候,即需要由服务提供方提供一个war包的时候,该怎么办呢?

一开始没有查找资料,自己差点准备使用传统的ssm框架改造服务的,后来思考和参考相关资料后,发现只需要挤出简单的配置和改造就可以做到,下面是记载将springboot项目改造打包成war的流程,算是一个简单的参考:

1、修改pom.xml文件将默认的jar方式改为war:
<groupId>com.example</groupId>
<artifactId>application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--默认为jar方式-->
<!--<packaging>jar</packaging>-->
<!--改为war方式-->
<packaging>war</packaging>
2、排除springboot内置的tomcat干扰
<!--最终打成war包,排除内置的tomcat-->
        <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>
3、改造启动类

继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法:

以前的:

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

现在的:

@SpringBootApplication
public class MainApp extends SpringBootServletInitializer {
 
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class,args);
    }
 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MainApp.class);
    }
}
4、pom文件中不要忘了maven编译插件
<build>
    <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
</build>
5、如果在idea的环境下,依次执行窗口里的 clean ,install即可,

执行完毕后,可以看到war包已经生成了,默认是在target目录下,位置可以在pom文件中进行配置,

即可!!

原文地址:https://www.cnblogs.com/npeng/p/13294329.html