Отключить посредничество зависимостей 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.