由于公司运维部署项目采用的都是外置tomcat形式,所以要将springboot默认jar形式改成war形式,其中遇到各种坑,在此记录一下,也希望可以帮助遇到同样坑的伙伴。
如标题,我项目不是继承spring-boot-starter-parent形式,如下:org.springframework.boot spring-boot-dependencies 1.5.7.RELEASE pom import
因为我的是一个web项目,引入spring-boot-starter-web,此模块包含tomcat,所以在pom做如下剔除即可
org.springframework.boot spring-boot-starter-tomcat provided
对啦,剔除之后还要引用如下
javax.servlet javax.servlet-api provided
再将packaging jar 改为 war,
构建插件加入如下(注意看代码中的注释,很重要):
org.springframework.boot spring-boot-maven-plugin 1.5.7.RELEASE xxx.Application ZIP -Dfile.encoding=UTF-8 true repackage org.apache.maven.plugins maven-war-plugin false xxx.Application true
最后,最重要的一个就是更改启动类Application,修改如下(也请注意注释):
@SpringBootApplication//@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})如果项目不需要连数据库,一定要剔除dataSource自动配置,否则会报错误,具体你实验就知道了,哈哈public class Application extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); }}
按照以上操作完就可以把打好的war放到外置的tomcat跑起来了,躺坑记录完毕,又可以愉快地耍了~~