SpringBoot部署到Tomcat

前言

都知道在使用SpringBoot进行部署项目的时候有两种方式。第一种方式就是正常的打成jar包,然后通过 java -jar xxx.jar 命令来运行项目(因为SpringBoot是内嵌的Tomcat服务器的);第二种方式就是采用老方法让项目打成war包,然后把这个war包放到Tomcat服务器的webapps目录下,最后启动tomcat进行部署。

这两种方式各有各的好处,首先说说jar包。它呢主要就是方便,不需要再去安装配置tomcat的环境,直接通过命令就能直接运行项目。但是一个项目就需要占用一个端口,不能像直接部署到Tomcat中的那样一个端口中可以运行多个项目。这是因为SpringBoot是内嵌的Tomcat服务器,所以它自己会启动一个Tomcat服务器,用来运行项目。

再来说说war包,他虽然没有jar包来的方便但是通过部署到tomcat中可以让一个端口中可以运行多个项目。

在部署的时候不管是jar包还是war包都行,看个人需要。这篇文章就来说说SpringBoot项目如何打成war包并部署到Tomcat中。

版本信息

SpringBoot:3.1.5

Tomcat:10.1.30

前置

继承类

SpringBoot项目的启动类需要继承 SpringBootServletInitializer 类,并重写其中的 configure 方法。

builder.sources 方法是用来指定启动类的,里面填写的是启动类的类名。写当前的即可

1
2
3
4
5
6
7
8
9
10
11
@SpringBootApplication
public class WPAApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WPAApplication.class, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WPAApplication.class);
}
}

POM文件

首先在 pom.xml 文件中修改它的打包方式,默认是jar包。修改成war包即可

1
<packaging>war</packaging>

因为SpringBoot是内嵌的Tomcat服务器,所以需要把Tomcat的依赖排除掉

1
2
3
4
5
6
<!--排除Tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

设置包名,在部署到Tomcat后在访问项目中的接口时必须要输入包名

1
2
<!-- 父元素为 build 标签 -->
<finalName>项目打包名<finalName>

如果不设置包名那么它的默认包名就是 rtifactId + version 的拼接。

比如现在有一个项目叫aaa它的版本是0.0.1,在不设置报名的情况下部署到Tomcat中想要访问这个项目需要输入 http://localhost:8080/aaa-0.0.1/接口,但是如果设置包名为 aaa 则访问时输入 http://localhost:8080/aaa/接口 即可。

部署

在打包之前先使用一下 mvn clean 这个命令,清除掉原来 target 目录下的文件。

然后使用 mvn package 这个命令,开始打包。当出现 BUILD SUCCESS 的时候,说明打包成功。此时 war 包就在 target 目录下了,就是后缀为 .war 的。

找到war包之后把它上传到服务器中tomcat的webapps目录下。然后启动tomcat不需要解压war包,他会自动进行部署