如果你的SpringBoot工程是一个jar工程,而想把它改造成war工程,并打成war包放到外部的tomcat下运行,该怎么修改配置呢?这里以Maven工程为例进行介绍。
(1)将pom.xml中的打包方式由jar改成war
(2)在pom.xml中添加spring-boot-starter-tomcat依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
(3)创建一个java类ServletInitializer,继承SpringBootServletInitializer,重写其configure方法,并通过builder.sources(MavenApplication.class)将SpringBoot工程的启动类(比如我的启动类名为MavenApplication)传进去:
package com.xuebusi.springboot.maven; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; /** * Created by SYJ on 2017/12/20. */ public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MavenApplication.class); } }
(4)使用maven插件打war包,如下图所示,双击package(或install)命令即可打包:
除了上面的打包方式之外,还可以在IntelliJ IDEA的命令行窗口使用maven命令来打包,比如使用"mvn install"或者"mvn package"命令来打包:
打包成功:
打好的war包位于项目的target目录下:
(5)将war包拷贝到外部tomcat的webapps目录下,并改名为ROOT.war:
启动tomcat,即可看到控制台SpringBoot启动成功:
项目源码:https://github.com/xuebus/xbs-springboot-maven-war
(文章结束)