Лучший способ определить, все ли в порядке с вашим приложением, - это провести хорошие тесты.
Однако обычно не исключают транзитивные зависимости из библиотек <dependency>
проекта.Выполнение этого может потенциально сломать зависимость тонким и трудно заметным способом.Обычно безопаснее удалить все <dependency>
.
. Существует несколько сценариев, когда следует использовать <exclude>
:
Работа с несовместимыми переходными зависимостями между различными библиотеками, напримерA требует библиотеку C-1.0, но библиотека B требует библиотеку C-2.0, тогда как C-1.0 и C-2.0 не могут сосуществовать на пути к классам.
Наличие транзитивных зависимостей, уже предоставленных системой, напримерразвертывание в Tomcat с дополнительными JAR-файлами в каталоге TOMCAT_HOME/lib
.
Если вы решили исключить зависимость, важно проверить конечный артефакт, потому что иногда плагины делают странные вещи, например, были версиииз maven-assembly-plugin
из-за ошибки, из-за которой во время создания затененного JAR-файла разрешались другие зависимости, чем maven-dependency-plugin
, используемый для компиляции.