如何更改现有 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>
中找到所有可以自定义的外部依赖项
对于 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)
我目前 运行 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>
中找到所有可以自定义的外部依赖项
对于 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)