springboot 默认是通常是打包成jar的,里面会内置一个tomcat容器
有时候我们需要使用以前打成war包的方式部署到对应的tomcat中,
具体springboot 怎么从jar改成war的打包方式我就不细说了,百度一大把
- 基本就是pom加一个spring-boot-starter-tomcat 的dependency scope为provided
- packaging由jar改为war
- 增加一个类 继承 SpringBootServletInitializer 复写configure 返回application.sources(原先主函数那个类.class);
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
clean package -Dmaven.test.skip=true 打包后,放到tomcat6 7 8各种报错
很可能出问题的原因是springboot内置tomcat的版本和你实际部署到的tomcat不一致,放到正确的对应版本的tomcat下就解决了
查看springboot 内置tomcat版本的方法
参考 https://www.jb51.net/article/122547.htm
查看pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
- 1
- 2
- 3
- 4
- 5
这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,
spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,
使用它之后,常用的包依赖可以省去version标签。关于Spring Boot提供了哪些jar包的依赖,
可查看C:Users用户.m2
epositoryorgspringframeworkootspring-boot-dependencies1.5.1.RELEASEspring-boot-dependencies-1.5.1.RELEASE.pom
打开这个pom文件,搜索“tomcat.version” 会找到对应tomcat版本
ps:tomcat 8.0 和tomcat 8.5 还是有区别的 ,本来我一直用8.0.x的版本 ,但是现在springboot的内置版本却是8.5.x的 ,放到8.0是报错的,必须8.5才行……
ps2: war包部署到tomcat的项目访问要加上项目名
转: https://blog.csdn.net/opopopwqwqwq/article/details/82260658