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