Отношения между родителями и детьми Maven
Я столкнулся с нижеприведенным шаблоном "для отношений родитель-ребенок maven:
http://yuml.me/3f8dd366
В этом примере у нас есть модуль с 2 дополнительными модулями. Модуль имеет родительский pom "Parent для создания модуля", который знает два подмодуля как его дочерние элементы.
Подмодули никогда не подозревают, что этот родитель знает их, и они думают, что их родительский объект называется "Родитель для управления зависимостями". Которая имеет общие конфигурации, такие как управление зависимостями, конфигурацию плагина, общие свойства и т.д.
Мой вопрос:
Является ли это "хорошим" образцом? Смысл имеет ли он преимущества/недостатки, как кажущееся более интуитивно понятным patter дочернего отношения ↔ parent
Ответы
Ответ 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 и т.д., которые все они наследуют
Возможно, это может вам помочь: Родительский ром компании в целом