Каковы недостатки использования необъявленных зависимостей maven (через транзитивные зависимости)?

Maven включает транзитивные зависимости в путь к классу проекта, чтобы исключить необходимость переопределять эти зависимости снова и снова каждый раз, когда модуль зависит от модуля стороннего производителя. Используемой версией транзитивных зависимостей можно управлять из раздела управления зависимостями в корневом файле pom. Так что это управляемо.

Так почему же использование транзитивных зависимостей в проекте без явного объявления этого в файле pom считается плохой практикой?

Простой ответ да ... см. Также ответ JFMeier ...

khmarbaise 11.04.2018 11:56
1
1
96
1

Ответы 1

Обычно вы обновляете свои зависимости через некоторое время. Обновление может привести к потере транзитивных зависимостей, которые затем напрямую повлияют на вашу программу.

Если, с другой стороны, вы явным образом запишите все используемые вами зависимости, будет намного проще сделать обновления и посмотреть, что вы действительно используете.

Обновление зависимостей выполняется вручную, если я это делаю, то обычно потом выполняю полную сборку / тест. Если сборка / тест не удастся, то проверю, чего не хватает.

Ahmed Hammad 11.04.2018 12:02

@AhmedHammad Я считаю, что он имеет в виду транзитивные зависимости, которые «ВЫ САМИ» используете в своем приложении, не объявляя их явно. Предположим, вы используете в своем приложении spring -boot и знаете, что оно, в свою очередь, использует slf4j. Поскольку slf4j является транзитивным, вы можете использовать его «унаследованный от spring» без явного объявления его в вашем pom. Через некоторое время вы решите обновить весеннюю версию, но тем временем команда Spring решила больше не использовать slf4j - случай, когда ваше приложение больше не будет компилироваться.

Morfic 11.04.2018 12:10

@AhmedHammad Обновление зависимостей не всегда выполняется вручную, это можно автоматизировать, что требует хороших тестов ...

khmarbaise 11.04.2018 12:38

Другие вопросы по теме