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