从官网(https://start.spring.io)下载springboot之后,启动未见异常,但是会自动退出,控制台信息如下:
遇见该问题,多半是因为官网自动生成的pom中包含了对tomcat依赖的再次声明,在此声明中(如下)修改scope为provided,在启动时与tomcat并未启动(容器),导致实际启动就是一个main方法。
默认生成的pom文件包含如下依赖:
查询springboot依赖可以在spring-boot-dependencies.2.2.2.RELEASE文件看到依赖如下:
scope的改变,相信看到这里也就明白为什么启动的时候没有toamcat的信息了。
解决办法很简单:
- 如果springboot打算以jar的方式启动,这里直接删除spring-boot-starter-tomcat依赖即可(同样,可以修改scopr为默认值compile,与父pom依赖保持一致)。
- 如果希望以war包形式发布到tomcat下进行启动,这里的scope声明时必须的,不仅如此,还需要将tomcat的其他内置依赖同样去掉。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除对Tomcat的内置依赖 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
注:可能需要引入对javax.servlet-api的依赖(如果需要)
**
特别注意:
高版本的springboot对此处有调整,需要注意的时,以下依赖必须包含一个
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
与
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
**