Исключения были доступны в Maven долгое время, это не проблема.Оставьте текущую версию Maven, она хорошо справится со своей работой.
Я думаю, что здесь есть путаница.Из отрывка pom, который вы написали выше, мы видим, что вы импортируете pom (область действия «импорт»), которая часто называется спецификацией (для спецификации).
Спецификация импортируется в <dependencyManagement>
раздел (не показан выше), и его цель может быть суммирована следующим образом: «Я определяю много разных библиотек, включая их версии, так что если вы импортируете меня, вы можете пропустить, чтобы указать версию библиотек, которые вы определяете, но вам все равно придется явноопределить ваши прямые зависимости ".
Под этим я подразумеваю, что спецификация не" заставляет "вас использовать библиотеки, которые она определяет: она только намекает на то, что в случае, если вы или ваши зависимости зависят от конкретной библиотекиZ, тогда версия Z будет принудительно установлена на версию, определенную в спецификации ".
Таким образом, спецификация не" навязывает "зависимости от вас, поэтому вы не можете" исключить "любую зависимость, когда эта спецификацияопределен. Вы должны точно определить, где зависимость Z, которую вы хотите исключить, определены в вашем собственном проекте, и удалить ее там.также будет считаться транзитивной зависимостью, в этом случае вы должны исключить ее из зависимости, которую вы указали, используя теги <exclusions>
/ <exclusion>
и groupId
/ artifactId
.
В заключение: измените свой подход, вы не ищете в нужном месте.А также используйте плагин зависимостей Maven, который является вашим лучшим другом, чтобы понять, откуда возникла ваша нежелательная зависимость (mvn dependency:tree
).
Надеюсь, это поможет
PS: вы не сказали, но делаетеу вас есть многомодульный проект?