Мультимодуль Maven: объединить общие зависимости в одну? - PullRequest
11 голосов
/ 22 мая 2011

Я искал такой вопрос, не найдя ничего, поэтому я иду.

У меня есть многомодульный проект maven.Несколько модулей наследуют одного и того же родителя, где определены общие зависимости.Среди них есть один из моих собственных модулей, «общий», в котором реализована некоторая общая функциональность.

Мой вопрос: что было бы лучше для общих зависимостей: определите их все явно в родительскомкак у меня сейчас?Или определить их в «общем» модуле, на который ссылаются другие модули, а затем полагаться на транзитивность (например, единую точку входа для общих зависимостей)?

Ответы [ 2 ]

16 голосов
/ 26 июля 2011

Лучше всего использовать тег зависимостей в родительском pom для определения ваших зависимостей и их версий, а затем ссылаться на эти зависимости в ваших подмодулях, где это необходимо. Когда вам требуются другие подмодули в вашем проекте (т.е. ваш общий подмодуль из другого подмодуля), тогда зависимости будут найдены транзитивно. Например:

В вашем родительском пом:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

В вашей общей поме (обратите внимание, что нет версии или области):

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
  </dependency>
</dependencies>

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

0 голосов
/ 26 июля 2011

Я вижу два разумных варианта:

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

...