欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot 项目打 war 包流程

程序员文章站 2022-07-14 18:48:23
...

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

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

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

1、pom文件添加如些依赖,

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>

这个依赖主要是用于在和jsp进行整合的使用,可酌情添加

2、排除springboot内置的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>

有人说也可以添加一个tomcat的依赖,这种方式也许是可以的,但是我没有尝试,大多数推荐的还是上面一种,即排除掉内置的tomcat,

org.springframework.boot spring-boot-starter-tomcat provided

3、改造启动类

改造之前:

@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即可,
SpringBoot 项目打 war 包流程

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

6、使用tomcat进行部署启动,

SpringBoot 项目打 war 包流程

可以自己指定启动端口和访问的路径,
SpringBoot 项目打 war 包流程

然后启动tomcat,看起来仍然像是springboot的启动界面,
SpringBoot 项目打 war 包流程

为了验证,我们访问一下项目里面的接口,这里访问我们的swagger,可以看到,已经可以成功访问了,
SpringBoot 项目打 war 包流程

项目启动的时候出现了乱码,如下所示,
SpringBoot 项目打 war 包流程

解决办法如下,添加配置,-Dfile.encoding=UTF-8即可,
SpringBoot 项目打 war 包流程

本篇的讲解到此结束,最后感谢观看!

相关标签: 转载