1 修改入口类
继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer类,覆盖configure()方法,用于打包。
@SpringBootApplication
public class MutildataApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MutildataApplication.class, args);
}
// 用于构建war文件并进行部署
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
}
2 修改.pom
首先指定打包方式,可选jar/war,这里打包为war包。
<packaging>war</packaging>
处理依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
1 排除 spring-boot-starter-tomcat。 这个其实不是必须的,就是不排除这个,打包后jar包里面多了tomcat插件相关的jar,看起来不严谨。
2 增加 javax.servlet-api。 如果没有排除 tomcat依赖的话,可以不加这个,但如果排除了tomcat插件依赖就必须加这个了。
还有说明一下,如果测试阶段用 mvn clean spring-boot:run 启动,是万万不能排除 tomcat依赖的。所以,我是在开发阶段注释掉这个依赖,在部署打包前,再让这个依赖生效。
3 打包
执行maven 命令:
mvn clean package
很多朋友不习惯添加 clean ,我觉得很奇怪,注意,一定要加上这个。
4 部署到Tomcat
在 target 文件夹下找到war,或文件夹,直接拷贝到 tomcat下的webapps文件夹下即可。
本文详细介绍了如何将一个Spring Boot应用修改为war包,并进行部署。首先,需要在入口类中继承SpringBootServletInitializer并覆盖configure方法。接着,修改pom.xml设置打包类型为war,排除spring-boot-starter-tomcat依赖,引入javax.servlet-api。通过maven的clean package命令进行打包。最后,将打包后的war文件复制到Tomcat的webapps目录下完成部署。

被折叠的 条评论
为什么被折叠?



