在 Spring Boot 上更改嵌入式 tomcat 版本

Posted

技术标签:

【中文标题】在 Spring Boot 上更改嵌入式 tomcat 版本【英文标题】:Change embedded tomcat version on spring boot 【发布时间】:2020-10-22 10:39:00 【问题描述】:

我想将我的嵌入式 tomcat 从 8.5.6 降级到 8.5.51。

在我的日志中,我可以找到以下信息:

“spring-boot-starter-tomcat/1.4.3.RELEASE/spring-boot-starter-tomcat-1.4.3.RELEASE.jar” ".m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.6/tomcat-embed-core-8.5.6.jar"

但是在我的 pom.xml 文件中,我没有对 tomcat 的任何引用。

执行 grep 命令,没有返回 'spring-boot-starter-parent' 或 'spring-boot-starter-tomcat'。

我可以在哪里以及如何明确添加我想要的 tomcat 版本?

【问题讨论】:

你能分享你的 pom.xml 吗? 【参考方案1】:

您可以通过查看依赖关系树来检查该依赖关系的来源:

mvn dependency:tree -Dverbose 

More info here.

另一种选择是在 pom.xml 文件中显式设置版本或将其从包含它的依赖项中排除:

<dependency>
  <groupId>a.group</groupId>
  <artifactId>a.artifact</artifactId>
  <version>a.version</version>
  <exclusions>
    <exclusion>
      <artifactId>tomcat</artifactId>
      <groupId>tomcat-group</groupId>
    </exclusion>
  </exclusions>
<dependency>

More info here.

【讨论】:

【参考方案2】:

如果您的项目或您的依赖项之一需要覆盖 由父 POM 管理的传递依赖,只需添加一个 该依赖项的版本属性。为了让这个规则对父母起作用 POM 必须为它所依赖的所有依赖项定义版本属性 管理(spring-boot-starter-parent 执行此操作)。

<properties>
        <tomcat.version>8.5.51</tomcat.version>
</properties>

【讨论】:

以上是关于在 Spring Boot 上更改嵌入式 tomcat 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 应用程序的嵌入式 untertow 中禁用 HTTP TRACE

如何在嵌入式 tomcat 服务器上部署 Spring Boot Web 应用程序,来自 Spring Boot 本身

重新加载Spring Boot 上的更改,而无需重新启动服务

如何配置Spring Boot Tomcat

H2 嵌入式数据库在 Spring Boot 测试期间未获取属性

Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本