Подтвердить что ты не робот

Отношения между родителями и детьми Maven

Я столкнулся с нижеприведенным шаблоном "для отношений родитель-ребенок maven: Relation ship examplehttp://yuml.me/3f8dd366

В этом примере у нас есть модуль с 2 дополнительными модулями. Модуль имеет родительский pom "Parent для создания модуля", который знает два подмодуля как его дочерние элементы.

Подмодули никогда не подозревают, что этот родитель знает их, и они думают, что их родительский объект называется "Родитель для управления зависимостями". Которая имеет общие конфигурации, такие как управление зависимостями, конфигурацию плагина, общие свойства и т.д.

Мой вопрос:
Является ли это "хорошим" образцом? Смысл имеет ли он преимущества/недостатки, как кажущееся более интуитивно понятным patter дочернего отношения ↔ parent

4b9b3361

Ответ 1

Интересно посмотреть на агрегатор pom.

Это pom, который группирует проект по модулю, не имея отношения "родитель-ребенок". У агрегатора pom нет управления зависимостями. Он управляет сборкой.

Наличие родительского (ых) pom и агрегатора pom - довольно мощная функция maven.

Вы можете найти более подробную информацию здесь.

Эта страница maven также имеет ценную информацию о том, как настроить pom для сложных проектов.

Ответ 2

Хм... Я думаю, что не согласен с условиями на вашей фотографии. Вот как я это вижу:

enter image description here

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

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

При использовании этой конфигурации?

Один (или более) дополнительный модуль уже имеет родителя (т.е. был разработан в другом проекте, но вам нужно его перестроить). Обратите внимание, что запись <module> в многомодульном проекте является относительным путем, так что вы можете иметь что-то вроде:

<modules>
    <module>../../somedir/othermodule</module>
    ...
</modules>

Если это возможно, я рекомендую использовать мультимодуль также как родительский, потому что:

  • менее запутанный
  • чистые и читаемые разделы <modules> и <parent> (не нужно использовать уродливые относительные пути для указания родителя или подмодулей)
  • вы можете организовать свои модули в чистой иерархической структуре под SCM (чтобы maven-release-плагин был бы счастлив) (я знаю, что eclipse не нравится иерархические проекты, но эта другая проблема)

Ответ 3

Это действительно полезно иметь конфигурацию pom для всей компании, которая не заботится об этом, и содержит такие вещи, как свойства, dependecyManagement, репозитории, pluginManagement и т.д., которые все они наследуют

Возможно, это может вам помочь: Родительский ром компании в целом