Я только что привык к тому, что в моих проектах не было задействованных необъявленных или неиспользуемых объявленных зависимостей. Хотя очень сложно отслеживать неиспользуемые объявленные зависимости времени выполнения/тестирования, которые перечислены в зависимости: анализировать... Просто нужно писать комментарии к ним в pom.xml или иным образом управлять им, чтобы знать, что они необходимы для тестирования или времени выполнения.
Но путь разрешения конфликта версий до сих пор не ясен. Что касается транзитивных зависимостей.
Как работает стратегия ближайших побед? Когда одна версия используется над другой версией?
-
Если вы объявляете использованную необъявленную зависимость с номером версии, она всегда выигрывает
-
Если вы не укажете версию зависимостей явно, Maven не может разрешить любую версию конфликты, которые могут возникнуть в отношении этой зависимости (странно, но написано здесь)
-
Если вы не объявляете Undeclared используемую зависимость, она выбирает транзитивную зависимость от ближайшего уровня (стратегия ближайших побед), и если конфликт находится на одном уровне, то он каким-то образом решает между версией A над версией B... Может быть, первый из них возникает при обработке зависаний