Как найти, если мне нужно исключить зависимости в Java-проекте Maven? - PullRequest
2 голосов
/ 27 марта 2019

Я использую Intellij IDEA (2018.3.5) и Eclipse IDE, но я предпочитаю Intellij. У меня есть Java-проект на основе Maven с несколькими poms. Я добавил некоторые зависимости в один из файлов pom. Мне нужно выяснить, есть ли конфликты зависимостей, которые могут помешать запуску сборки при ее развертывании, а затем исключить их. Я попытался выполнить следующие шаги, чтобы найти конфликты, которые могут вызвать проблемы. Достаточно ли их или мне нужно сделать больше?

  • Проверьте, нет ли конфликтов времени компиляции с mvn clean install -DskipTests. Сборка прошла успешно, без ошибок.

  • Проверьте, не показывает ли Intellij никаких проблем в меню Файл> Структура проекта> Проблемы. Нет проблем.

Я также видел дерево зависимостей с mvn dependency:tree -Dverbose. В нем много «пропущено для дублирования» и «пропущено для конфликта с» элементами, но сборка прошла успешно. Я не вижу никаких ошибок, хотя. Означает ли это, что все в порядке, или я должен сделать что-то еще с этими конфликтами?

1 Ответ

1 голос
/ 27 марта 2019

Лучший способ определить, все ли в порядке с вашим приложением, - это провести хорошие тесты.

Однако обычно не исключают транзитивные зависимости из библиотек <dependency> проекта.Выполнение этого может потенциально сломать зависимость тонким и трудно заметным способом.Обычно безопаснее удалить все <dependency>.

. Существует несколько сценариев, когда следует использовать <exclude>:

  1. Работа с несовместимыми переходными зависимостями между различными библиотеками, напримерA требует библиотеку C-1.0, но библиотека B требует библиотеку C-2.0, тогда как C-1.0 и C-2.0 не могут сосуществовать на пути к классам.

  2. Наличие транзитивных зависимостей, уже предоставленных системой, напримерразвертывание в Tomcat с дополнительными JAR-файлами в каталоге TOMCAT_HOME/lib.

Если вы решили исключить зависимость, важно проверить конечный артефакт, потому что иногда плагины делают странные вещи, например, были версиииз maven-assembly-plugin из-за ошибки, из-за которой во время создания затененного JAR-файла разрешались другие зависимости, чем maven-dependency-plugin, используемый для компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...