Как изменить встроенную версию tomcat в существующем приложении весенней загрузки?

В настоящее время я запускаю приложение spring-boot version 1.4.0.RELEASE со встроенным котом. Включенная версия Tomcat: 8.5.4

Необходимо обновить версию tomcat до 9.x. Когда я посмотрел mvnrepository здесь я обнаружил, что доступно обновление для версии tomcat 9.0.5 (показано на рисунке ниже)

введите описание изображения здесь

Как мне использовать эту версию в моем проекте, если нет возможности напрямую упомянуть эту версию в моем pom.xml?

Я не хочу идти традиционным путем развертывания (артефакты WAR на внешних котах).


person shankulk    schedule 09.03.2018    source источник
comment
Я сомневаюсь, что это сработает, в tomcat произошли внутренние изменения, которые не отражены в коде Spring Boot 1.4.   -  person M. Deinum    schedule 09.03.2018
comment
В ПОРЯДКЕ. Но есть ли вообще способ изменить эту версию? Я готов обновить версию spring-boot до версии 2.0.0.RELEASE, однако у нее версия tomcat 8.5.28   -  person shankulk    schedule 10.03.2018
comment
Просто укажите версию, которую вы хотите использовать (при условии, что вы используете spring-boot-starter-parent в качестве родителя вашего проекта.   -  person M. Deinum    schedule 12.03.2018


Ответы (3)


Если вы используете плагин gradle для весенней загрузки и стартеры для весенней загрузки, вы можете настроить версию, установив свойства проекта maven в build.gradle.

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

для знатоков

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

Вы можете найти все внешние зависимости, которые можно настроить, в весенние-загрузочные-зависимости

person Thilak    schedule 10.10.2018
comment
Жаль, что вы не можете привести полный пример того, как это сделать. Это частичный ответ - person Shrikant Prabhu; 31.01.2020
comment
Использование 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}" } - person Shrikant Prabhu; 31.01.2020
comment
Если вы используете maven, добавьте зависимости в <dependencyManagement>, иначе проект может вообще не изменить его. - person Felix Aballi; 21.04.2021
comment
Я бы не стал приводить Tomcat 10 в качестве примера, так как он jakartified и текущие библиотеки Spring не будут работать с ним. - person Piotr P. Karwasz; 23.04.2021

Я знаю, что опоздал на вечеринку, искал похожую проблему, подумал, что поделюсь более буквальным намеком.

Вам нужно переопределить свойства, установленные в родительском pom spring (что является обязательным для этого), чтобы соответствовать вашему случаю (и совместимости тоже):

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

Это согласно [Introduction to Spring][1]. В их примере показано множество других зависимостей, выбранных самым лучшим образом. [1]: http://www.springboottutorial.com/spring-boot-starter-parent

person ptrk    schedule 18.07.2018

Для мавен-проектов

<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>
person Felix Aballi    schedule 21.04.2021