#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 ничего, что могло бы дать желаемый результат.