通过Tomcat部署SpringBoot程序 作者: nbboy 时间: 2020-03-17 分类: Java 评论 # 概述 因为以前没有通过Tomcat方式部署过程序,所以才有了这次踩坑之旅。这里记录下,权当备忘吧。 # POM文件改动 先把打包方式改为打War包 ``` war ``` 增加Tomcat的依赖,需要说明的是SpringBoot本来就自带一个Tomcat,但是在生产环境中不推荐用这个Tomcat,就是打包的时候不要把他打包进去。 ``` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat ``` 然后再自己增加一个Tomcat依赖,但是把作用域设置为provided,意思是说在本地开发的时候还是要这个Tomcat包的。 ``` org.springframework.boot spring-boot-starter-tomcat provided ``` 另外再修改servlet-api也根据环境打包,因为生产环境Tomcat有自己的servlet-api包。 ``` javax.servlet javax.servlet-api provided ``` # 安装Tomcat 这个在网上教程比较多,也没有什么坑,我参考的是这篇:[Ubuntu安装Tomcat](https://www.howtoing.com/how-to-install-apache-tomcat-8-on-ubuntu-16-04 "Ubuntu安装Tomcat") # 继承SpringBootServletInitializer 在启动类上继承这个SpringBootServletInitializer,然后重载configure方法,代码如下: ```java @SpringBootApplication @EnableSwagger2Doc @MapperScan(basePackages = "org.chenxf.studystore.dao") public class StudyStoreApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(StudyStoreApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(StudyStoreApplication.class); } } ``` # 项目打包 最后一步,执行mvn clean install -Dmaven.test.skip=true进行打包,打包完成后再target目录下生成的*.war包拷贝到Tomcat的webapps目录下即可。 # 总结 在实际操作中,我没有执行最后一步的打包命令,而是执行了SpringBoot配置的Plugins里的war命令去打包的,结果总是404错误,后来发现打的war包其实并没有把classes下的编译文件打进去。 另外也参考了这两篇文章提供的环境配置思路和tomcat的war包部署方法。基础还是很薄弱呀,需要继续加油,和读者共勉!!! 参考资料: [springboot+tomcat不同环境采用不同配置文件](https://www.cnblogs.com/GreenMountain/p/9720070.html "springboot+tomcat不同环境采用不同配置文件") [tomcat部署war包的三种方式](https://blog.csdn.net/sinat_36710456/article/details/83308236 "tomcat部署war包的三种方式")