Spring Boot 打 war 包
应用场景什么的就不分析,点进来大概率你是需要这个
SpringBoot 默认 jar 包,但是改 war 也很简单
一、 改造 POM.xml 文件
1、 pom.xml 文件中 packaging 结点值修改为 war
如果没有 <packaging>
节点,自己添加
<packaging>war</packaging>
2、 排除 SpringBoot 内嵌的 tomcat
dependencies
下找到 spring-boot-starter-web
这个依赖,添加 exclusions
<!-- 多模块排除内置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、添加 servlet-api 依赖, 打war包要用到
<!-- servlet-api 依赖, 打war包要用到 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
4、 build 下添加 finalName
<finalName>
等于application.yml
中的 context-path
<build>
<finalName>jerrydemo</finalName>
</build>
5、 改造前后差异对比
二、 改造启动类
继承 SpringBootServletInitializer
重写 SpringApplicationBuilder
改造前
package com.jerry.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
改造后
package com.jerry.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
}
先清理,再打包
参考资料
注意:
打成war
包后,原来配置文件中的 server.port 、context-path
这一类对内嵌tomcat
的设置就没用了,记得到你的 tomcat
中去配置吧。
Tomcat 部署 war
还没有评论,来说两句吧...