Spring Boot 打 war 包

梦里梦外; 2023-07-02 11:23 94阅读 0赞

应用场景什么的就不分析,点进来大概率你是需要这个

SpringBoot 默认 jar 包,但是改 war 也很简单

一、 改造 POM.xml 文件

1、 pom.xml 文件中 packaging 结点值修改为 war

如果没有 <packaging> 节点,自己添加

  1. <packaging>war</packaging>

2、 排除 SpringBoot 内嵌的 tomcat

dependencies下找到 spring-boot-starter-web 这个依赖,添加 exclusions

  1. <!-- 多模块排除内置tomcat -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-tomcat</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>

3、添加 servlet-api 依赖, 打war包要用到

  1. <!-- servlet-api 依赖, 打war包要用到 -->
  2. <dependency>
  3. <groupId>javax.servlet</groupId>
  4. <artifactId>javax.servlet-api</artifactId>
  5. <scope>provided</scope>
  6. </dependency>

4、 build 下添加 finalName

<finalName> 等于application.yml 中的 context-path

  1. <build>
  2. <finalName>jerrydemo</finalName>
  3. </build>

5、 改造前后差异对比

在这里插入图片描述

二、 改造启动类

继承 SpringBootServletInitializer 重写 SpringApplicationBuilder

改造前

  1. package com.jerry.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class DemoApplication{
  6. public static void main(String[] args) {
  7. SpringApplication.run(DemoApplication.class, args);
  8. }
  9. }

改造后

  1. package com.jerry.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.boot.builder.SpringApplicationBuilder;
  5. import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
  6. @SpringBootApplication
  7. public class DemoApplication extends SpringBootServletInitializer {
  8. public static void main(String[] args) {
  9. SpringApplication.run(DemoApplication.class, args);
  10. }
  11. @Override
  12. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  13. return builder.sources(DemoApplication.class);
  14. }
  15. }

先清理,再打包

在这里插入图片描述

参考资料

注意: 打成war包后,原来配置文件中的 server.port 、context-path 这一类对内嵌tomcat的设置就没用了,记得到你的 tomcat 中去配置吧。
Tomcat 部署 war

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读