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文件夹下即可。