Модули 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.

В противном случае, поскольку проект может стоять на своих двух ногах, я бы сказал (опять-таки ИМХО), что структура потребует включения этого проекта в качестве зависимости от его родителя.

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