Отключить посредничество зависимостей Maven
Поскольку я не доверяю Maven для выбора "лучшей" версии для меня в посредничестве зависимостей, я хотел бы скомпрометировать сборку, если есть конфликт версий, который явно не установлен в pom (обычно с помощью dependencyManagement),
Правило dependencyConvergence плагина forcecer, похоже, было тем, что я искал, но, к сожалению, он не может обрабатывать * -exludes (https://issues.apache.org/jira/browse/MENFORCER-195), поэтому я не могу использовать его.
Есть ли другой способ остановить Maven от применения правила "ближайшего правила выигрыша зависимостей", но заставить владельца pom решить, какую версию использовать?
Ответы
Ответ 1
Вы можете использовать Maven Enforcer Plugin и не выполнить сборку, если dependencyConvergence
. Сделайте снимок и посмотрите, делает ли он то, что вы хотите.
Обновление: Извините, я только заметил, что вы пробовали и имеете проблему с исключениями. Вы пытались построить плагин с запросом на извлечение из связанного билета и посмотреть, исправляет ли он проблему для вас?
Ответ 2
Вы можете явно указать, какую версию Maven следует использовать, используя диапазоны версий зависимостей.
В основном вам просто нужно окружить свою версию круглыми скобками (эксклюзивный квантификатор) или квадратными скобками (включительный квантификатор).
Например:
<version>[4.2]</version>
означает: используйте точно версию 4.2 и ничего больше.
Или:
<version>[4.2,)</version>
означает: используйте версию 4.2 или выше.
Или:
<version>(,4.2]</version>
означало бы: используйте версию ниже или точно 4.2.