SprinigBoot项目打成war包部署到tomcat
刚开始使用springboot的时候,因为不熟悉jar包部署,曾一度想把项目打包成war扔到tomcat容器中,折腾了一顿,启动项目总是报错,便放弃了。后面项目上线都是直接使用jar部署的方式。
昨天查看spring文档的时候,无意中发现文档中是有相关内容指导我们怎么去把项目打成war包的,然后自己又试了一遍。结果成功了。今天记录一下这个过程,下面附上最权威的官方文档:
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file
按照官方文档三步走原则
1、启动类(入口)继承SpringBootServletInitializer并重写configure方法。以便能够支持servlet3.0,这样在tomcat等外部servlet容器中就能够得到配置并启动了。
2、更改打包方式(maven管理模式下)
要想war包部署,肯定要打成war包的(●ˇ∀ˇ●)
3、更改内嵌容器的依赖sope为provided(就是打成war包的时候排除掉)
这里把默认的内嵌容器tomcat的scope设置为provided,一并要排除的还有这个javax.servlet-api,因为在tomcat等外部容器中已经有一个servlet-api了,再打包进去一个会有告警提示。
问题
问题1、把war包部署到tomcat7中启动报错,是因为tomcat7中的el-api版本是2.2,缺少的类是在el-api 3.0中添加的。
解决办法、直接换一个高版本的tomcat就好了。
小尾巴~~
只要有积累,就会有进步