управление зависимостями maven и изменение версии транзитивной зависимости

#java #maven #dependency-management #transitive-dependency

Вопрос:

Как безопасно справиться с такой проблемой:

В maven у нас есть 2 библиотеки (A с версией 20, B с версией 30), которые зависят от C (1.0 и 1.1 соответственно). Мы попадаем в ад в целевых библиотеках

 *--A20--C1.0
--B30--C1.1
 

Затем я добавляю раздел dependencyManagment и форсирую версию C до 1.1. Это работает так, как и ожидалось.

 *--A20--C1.1 (not C1.0)
--B30--C1.1
 

Через несколько месяцев мы решаем обновить A до версии 50. Теперь это зависит от версии C 2.0. Но проект все еще использует 1.1 из-за управления зависимостями. Теперь это проблема

 *--A50--C1.1 (not C2.0 as needed)
--B30--C1.1
 

Вопрос в следующем: возможно ли переопределить транзитивную зависимость, и это переопределение будет работать только в том случае, если версия транзитивной зависимости соответствует установленной нами версии? В противном случае это переопределение будет проигнорировано, и мы увидим ошибку (например, с помощью плагина maven-enforcer). Интересно, есть ли у нас какой-нибудь плагин для проверки этого дела?

Комментарии:

1. Я имею в виду проверку для использования в CI. Я всегда могу просмотреть дерево зависимостей самостоятельно, но оно нестабильное

Ответ №1:

Нет.

Я понимаю ваш вариант использования, но я не вижу в Maven ничего, что могло бы дать желаемый результат.