Maven: Должен ли я хранить или удалять объявленные зависимости, которые также являются транзитными зависимостями?

Считаете ли вы, что это хорошая практика для удаления всех транзитивных зависимостей, которые можно найти в maven pom?

Пример:
Мой проект зависит от A и B.
B также является транзитивной зависимостью A.
Должен ли я держать B в моем пом или удалить его?

Что самое лучшее:
имея все известные банки, даже переходные, заявленные на помпе или содержащие только верхние банки уровня?

Это немного субъективно, но я пытаюсь очистить некоторые огромные поры (родители и дети) с множеством транзитивных зависимостей. Я хочу, чтобы мой pom был как можно более простым, но я хочу, чтобы они тоже были подтянуты.

Если у вашего проекта есть прямые зависимости от B, вы должны сохранить его, даже если B является транзитивной зависимостью A. Возможно, что в следующей версии A не будет использовать B, вам придется реструктурировать pom.xml.

Как правило, зависимости Maven должны отражать логические зависимости проекта.

Я бы предпочел избежать объявления транзитивных зависимостей и явно включить их в pom, если для этого есть веская причина. Вот мои аргументы:

  • Я стараюсь держать pom как можно проще . При объявлении транзитивных зависимостей, даже если они используются явно, Maven pom становится более подробным.

Объявляя транзитивные зависимости (даже если они явно нужны):

  • Внедрение избыточности в декларации вводится , поскольку эта информация уже находится в дескрипторе pom артефакта, который требуется .

  • Если новая версия требуемого артефакта больше не зависит от transitive dependency , вам необходимо удалить transitive dependency от вашей сборки самостоятельно, если эта transitive dependency явно объявлена.

  • Информация для транзитивности управляется декларацией транзитивной зависимости явно.

Было бы целесообразно включить зависимость в явном виде в следующем случае:

  • У вас есть две зависимости, например C и D , для которых требуются разные версии транзитивной зависимости B (или вам нужна конкретная версия B в вашем проекте). В этом случае вам нужно выбрать версию B и явно определить транзитивную зависимость T (*)

Вывод : я попытался бы избежать объявления, если не имеет смысла объявлять артефакт конкретно (например, в случае (*)).

  • Слабая переменная NSString не равна нулю после установки единственной сильной ссылки на nil
  • «System.OutOfMemoryException» было брошено, когда еще много свободного места
  • Как тег отличается от ветки в Git? Что я должен использовать здесь?
  • Почему @autoreleasepool все еще нуждается в ARC?
  • В Gradle, как объявить общие зависимости в одном месте?
  • Указывает ли переменная = null ее на сборку мусора
  • Накладные расходы памяти Java HashMap по сравнению с ArrayList
  • Процедура слишком большая
  • Различия между зависимостью управления и зависимостями в Maven
  • Дублировать и переименовывать проекты Xcode и связанные с ними папки
  • iOS6 MKMapView с использованием тонны памяти, вплоть до сбоя приложения, кто-нибудь еще заметил это?
  • Interesting Posts

    Как преобразовать линейный переход ^ M в нормальный разрыв строки в файле, открытом в vim?

    Что более вредно для процессора? Высокая нагрузка или высокая температура?

    AWS Elastic Beanstalk, работает cronjob

    Как настроить DNS-приложение heroku для домена Godaddy?

    Профайлинг Windows XP?

    Можете ли вы изменить templateUrl на лету?

    Код для прокрутки всех файлов excel в указанной папке и вытаскивание данных из определенных ячеек

    Как сохранить экран в своем приложении?

    Используйте «Shift + Caps lock» вместо «Caps Lock»

    Ложноположительная ошибка «неопределенной переменной» при компиляции SCSS

    Существует ли конвертер / инструмент Java для C ++?

    Как загрузить все изображения с веб-сайта (а не веб-страницы) с помощью терминала?

    Установите определенные порты USB только для перезагрузки

    В событии наведения CSS можно изменить стиль другого div?

    Как сделать Outlook показанным непрочитанным подсчетом папки, включая ее подпапки?

    Давайте будем гением компьютера.