Модули Maven против автономных POM Maven как зависимости
В настоящее время я работаю над проектом, который включает в себя около десятка подпроектов.
Каждый подпроект содержит POM, который строит зависимость отдельно.
Восходящие подпроекты включают нижестоящие подпроекты в качестве зависимостей так же, как вы бы включили зависимость в нечто вроде log4j:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
Мы храним эти зависимости в локальном хранилище Nexus.
Кажется, это работает для нас.
Однако сегодня, после 11 месяцев разработки, я решил вернуться к этим дюжинам POM-файлов с учетом рефакторинга.
Я впоследствии обнаружил <parent>
а также <module>
тэги и начинаю сомневаться в правильности моей стратегии проекта Maven.
Какая польза от рефакторинга моих POM, чтобы POM самого верхнего уровня (проект Web WAR) был заменен на Parent POM, в котором перечислены модули, а не ряд зависимостей, как указано выше?
Я бы предположил, что большинство из дюжины подпроектов сами по себе вступят в жизненный цикл, так что они будут доступны в репозитории Nexus компании в качестве библиотек кода для других проектов компании.
Например, это тот случай, когда используется мультимодульный подход, чтобы разбить и организовать состав подкомпонента проекта? Или можно взять модуль для представления всего компонента проекта?
1 ответ
Спасибо всем за мнение - я понимаю, что этот вопрос субъективен.
Через некоторое время мне показалось, что "правильный" ответ на этот вопрос будет определяться другим вопросом: у каждого из подпроектов свой жизненный цикл?
Я полагаю, мы могли бы использовать агрегацию и композицию классов UML в качестве метафоры. Если подпроект (конечный узел для заимствования термина из @yorkw) не может существовать сам по себе или иметь собственный жизненный цикл вне рамок родительского проекта (будь то WAR, EAR и т. Д.), То я бы сказал, IMHO, что структура гарантировала бы использование модулей в родительском POM.
В противном случае, поскольку проект может стоять на своих двух ногах, я бы сказал (опять-таки ИМХО), что структура потребует включения этого проекта в качестве зависимости от его родителя.