springboot 项目部署到外部tomcat
最近在用spring boot 弄了一个学习型的项目,学习一下spring boot怎样构建项目,spring boot 本身是内置tomcat的,如果想部署到外部tomcat, 就要做一些改变。
1 默认打包方式是jar包,改成war包打包,在pom.xml 里
<packaging>war</packaging>
- 1
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
第二种:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
- 1
- 2
- 3
- 4
- 5
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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
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>
- 1
- 2
- 3
6 将打包好的war 放到tomcat的webapps下面 启动就可以了