【问题标题】:How to change embedded tomcat's version in existing spring boot app?如何更改现有 Spring Boot 应用程序中的嵌入式 tomcat 版本?
【发布时间】:2018-08-17 22:31:52
【问题描述】:

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

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

如果我的pom.xml中没有办法直接提及这个版本,我应该如何在我的项目中使用这个版本?

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

【问题讨论】:

  • 我怀疑它会起作用,tomcat 中有一些内部变化没有反映在 Spring Boot 1.4 的代码中。
  • 好的。但是有没有办法改变那个版本呢?我准备将spring-boot 版本升级到2.0.0.RELEASE 但是有tomcat 版本8.5.28
  • 只需指定您要使用的版本(假设您使用spring-boot-starter-parent 作为项目的父级。

标签: tomcat spring-boot embedded-tomcat-8


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    如果您使用的是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中找到所有可以自定义的外部依赖

    【讨论】:

    • 太糟糕了,你不能给出完整的例子来说明如何做到这一点。这是部分答案
    • 使用 gradle 可以做到 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}" }
    • 如果使用 maven,请在 &lt;dependencyManagement&gt; 中添加依赖项,否则项目可能根本不会更改它。
    • 我不会以 Tomcat 10 为例,因为它是 jakartified 并且当前的 Spring 库无法使用它。
    【解决方案3】:

    对于 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>
    

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2017-10-21
      • 2020-11-16
      • 2017-11-21
      • 2018-05-29
      • 1970-01-01
      • 2015-07-31
      • 2020-07-18
      • 1970-01-01
      相关资源
      最近更新 更多