如何更改现有 spring 启动应用程序中嵌入的 tomcat 的版本?

How to change embedded tomcat's version in existing spring boot app?

我目前 运行 spring-boot version 1.4.0.RELEASE 具有嵌入式 tomcat 的应用程序。包括 Tomcat 的版本是 8.5.4

需要将 tomcat 版本更新到 9.x。当我查看 mvnrepository here 时,我发现 tomcat 版本 9.0.5 有可用的更新(如下图所示)

如果无法在我的pom.xml中直接提及此版本,我应该如何在我的项目中使用此版本?

我不想走传统的部署路线(WAR 外部 tomcats 上的工件)。

我认识的聚会迟到了,正在寻找类似的问题,我想我会分享一个更直接的提示。

您需要覆盖 在 spring 的父 pom 中设置的属性(这是强制性的)以适合您的情况(以及兼容性):

<properties>
......
    <tomcat.version>9.0.5</tomcat.version>
......
<properties>

这是根据 [Spring][1] 的介绍。他们的示例显示了许多其他精心挑选的依赖项。 [1]: http://www.springboottutorial.com/spring-boot-starter-parent

如果您正在使用 spring boot gradle 插件和 spring boot starters ..您可以通过在 build.gradle 中设置 maven 项目属性来自定义版本。

ext['tomcat.version'] = '9.0.45'

对于专家

<properties>
    <tomcat.version>9.0.45</tomcat.version>
<properties>

您可以在spring-boot-dependencies

中找到所有可以自定义的外部依赖项

对于 Maven 项目

<properties>
  ...
  <tomcat.version>8.0.53</tomcat.version>
</properties>

<dependencyManagement>
        <dependencies>
         <!-- NON-INFORMATIVE -->
         <!--   <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>${bom.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>   -->
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
                <version>${tomcat.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-el</artifactId>
                <version>${tomcat.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

通过在构建 gradle 中添加 ext 版本更改版本并尝试 运行 应用程序出现错误 获取错误:....嵌套异常是 java.lang.NoSuchMethodError:org.apache.catalina.Context.addServletMapping(Ljava/lang/String)