Должны ли вы включать в свой pom те зависимости, которые уже являются зависимостями некоторых ваших зависимостей? - PullRequest
0 голосов
/ 08 ноября 2018

Скажем, есть две зависимости, которые вам нужны: A и B. И в то же время A уже является зависимостью от B. Так что вы все еще хотите / должны добавить A вместе с B в качестве зависимостей в вашем pom?

Я полагаю, что это может быть необходимо, когда A и B являются внешними библиотеками, где необходимая версия A может отличаться от версии A, от которой зависит B.

Но как быть, когда и ваш модуль, и A и B являются модулями в одном проекте? то есть зная, что их версии будут синхронизированы.

1 Ответ

0 голосов
/ 08 ноября 2018

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

Что касается версий, вы должны управлять теми, у кого dependencyManagement в родительском помпе. Затем вы можете пропустить версию для управляемых зависимостей в дочерних poms. Версия в dependencyManagement переопределяет версию в транзитивных зависимостях, гарантируя, что вы везде используете одну и ту же версию.

Если все модули находятся в одном проекте, они также должны иметь одинаковую версию проекта. Как правило, это будет версия снимка, например, 1-SNAPSHOT

Каждый модуль будет использовать что-то вроде:

<project>
  <artifactId>A</artifactId>
  <version>1-SNAPSHOT</version>

И ссылаться на A и B следующим образом в других модулях:

<dependency>
  <groupId>com.yourcompany</groupId>
  <artifactId>A</artifactId>
  <version>${project.version}</version>
</dependency>

Чтобы установить версию, отличную от SNAPSHOT, перед созданием выпуска, вы можете, например, использовать версии плагина maven-dependency-plugin: set goal.

...