我目前正在运行内嵌的Tomcat的spring-boot version 1.4.0.RELEASE
应用程序。包括的Tomcat版本为8.5.4
。
需要更新Tomcat版本到9.x
。当我在mvnrepository这里查看时,发现有一个可用于Tomcat的更新版本9.0.5
(如下图所示)
如果在pom.xml
中没有直接提及此版本,我该如何在我的项目中使用它?
我不想采用传统的部署方式(将WAR构件部署到外部的Tomcat上)。
我目前正在运行内嵌的Tomcat的spring-boot version 1.4.0.RELEASE
应用程序。包括的Tomcat版本为8.5.4
。
需要更新Tomcat版本到9.x
。当我在mvnrepository这里查看时,发现有一个可用于Tomcat的更新版本9.0.5
(如下图所示)
如果在pom.xml
中没有直接提及此版本,我该如何在我的项目中使用它?
我不想采用传统的部署方式(将WAR构件部署到外部的Tomcat上)。
如果您正在使用Spring Boot Gradle Plugin和Spring Boot Starters,您可以通过在build.gradle中设置Maven项目属性来自定义版本。
ext['tomcat.version'] = '9.0.45'
对于Maven
<properties>
<tomcat.version>9.0.45</tomcat.version>
<properties>
您可以在spring-boot-dependencies中找到所有可自定义的外部依赖。
def tomcatVersion = '9.0.30'
和
dependencies { implementation "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}" implementation "org.apache.tomcat.embed:tomcat-embed-el:${tomcatVersion}" implementation "org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}" implementation "org.apache.tomcat:tomcat-annotations-api:${tomcatVersion}" }
- Shrikant Prabhu<dependencyManagement>
中添加依赖项,否则项目可能根本不会更改它。 - Felix Aballipom.xml
可以覆盖:https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-dependencies - kashev我知道我来晚了,正在寻找类似的问题,想分享一个更字面的提示。
您需要覆盖在Spring父POM中设置的属性(这是必需的)以适应您的情况(还要考虑兼容性):
<properties>
......
<tomcat.version>9.0.5</tomcat.version>
......
<properties>
这是根据[Spring简介][1]。他们的示例展示了许多其他精选依赖项。 [1]: http://www.springboottutorial.com/spring-boot-starter-parent
<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>
在build gradle中添加ext版本后更改版本并尝试运行应用程序时出现错误 获取错误:....嵌套异常是java.lang.NoSuchMethodError: org.apache.catalina.Context.addServletMapping(Ljava/lang/String)
spring-boot
版本升级到2.0.0.RELEASE
,但这会带来Tomcat版本8.5.28
。 - shankulkspring-boot-starter-parent
作为项目的父类)。 - M. Deinum