最近在用spring boot 弄了一个学习型的项目,学习一下spring boot怎样构建项目,spring boot 本身是内置tomcat的,如果想部署到外部tomcat, 就要做一些改变。
1 默认打包方式是jar包,改成war包打包,在pom.xml 里
<packaging>war</packaging>
2 在maven里排除自带tomcat插件,有两种方法
第一种:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
第二种:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
3 将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法
@SpringBootApplication public class BootdoApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(BootdoApplication.class, args); System.out.println("ヾ(◍°∇°◍)ノ゙ bootdo启动成功 ヾ(◍°∇°◍)ノ゙/n" + " ______ _ ______ /n" + "|_ _ // / |_|_ _ `. /n" + " | |_) | .--. .--. `| |-' | | `. // .--. /n" + " | __'. / .'`// /// .'`// //| | | | | |/ .'`// // /n" + " _| |__) || //__. || //__. || |, _| |_.' /| //__. | /n" + "|_______/ '.__.' '.__.' //__/|______.' '.__.' "); } protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(BootdoApplication.class); } }
4 在idea 里用maven打包
maven clean and install 就打包完成了,在target下就能找到war包
5 后来发现war包在本地跑没问题,部署到服务器上就无法启动了,查阅spring boot 官方文档发现spring boot 只支持tomcat 8.5 以上版本,而服务器上的版本是7.0.47
需要在pom.xml里指定低版本的tomcat
<properties> <tomcat.version>7.0.47</tomcat.version> </properties>
6 将打包好的war 放到tomcat的webapps下面 启动就可以了。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/15327.html