Изменение версии транзитивной зависимости в maven pom.xml

Я пытался переопределить версию транзитивной зависимости в одном из моих проектов. Я нашел следующий образец проекта на github для экспериментов ( https://github.com/Richou/swagger-codegen-maven-plugin). Родительский pom этого проекта содержит зависимость для swagger-codegen. Swagger-codegen, в свою очередь, имеет зависимость slf4j-ext версии 1.6.3. Я хочу обновить/переопределить версию slf4j-ext до 1.7.30 из родительского pom. Я попытался добавить требуемую версию slf4j внутри тега свойств в родительском pom, но это не сработало, когда я проверил дерево зависимостей maven. Каков правильный метод сделать это?

        <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-codegen</artifactId>
        <version>2.1.2</version>
    </dependency>
</dependencies>

<properties>
    <slf4j-version>1.7.30</slf4j-version>
    <java.version>1.7</java.version>
</properties>

есть ли причина, по которой переопределение свойства не работает?

I'am not batman 13.12.2020 14:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
5 928
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить slf4j-ext с нужной вам версией в разделе dependencyManagement вашего родительского файла pom.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-ext</artifactId>
      <version>${slf4j-version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

Что вы подразумеваете под "иногда этого может быть недостаточно"? <dependencyManagement> переопределяет транзитивные зависимости.

J Fabian Meier 13.12.2020 11:39

Вы правы, я отредактировал свой ответ, чтобы удалить эту часть.

Zinc 13.12.2020 11:57

<dependencyManagement> работает, но может ли кто-нибудь сказать мне, почему переопределение версии внутри <properties> в родительском pom не работает? Я хочу лучше понять, как работает pom.

I'am not batman 13.12.2020 16:23

Поскольку свойства, которые вы определяете в своем pom, не применяются к вашим зависимостям, они применяются только к вашему pom и подмодулям. Другими словами, невозможно переопределить свойство, определенное в зависимости.

Zinc 14.12.2020 05:49

Другие вопросы по теме