2012-04-15 2 views
1

При написании в первый раз многомодульного maven pom, мне интересно.Multi-Modules maven pom

Во-первых, здесь мой родитель POM:

... 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>project.room_management</groupId> 
    <artifactId>room_management</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 
    <name>room_management</name> 
    <modules> 
     <module>room_management_dao</module> 
     <module>room_management_domain</module> 
     <module>room_management_service</module> 
     <module>room_management_gui</module> 
    </modules> 
    ... 

и один из его детей:

 ... 
    <parent> 
     <groupId>project.room_management</groupId> 
     <artifactId>room_management</artifactId> 
     <version>1.0</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>project.room_management</groupId> 
    <artifactId>room_management_domain</artifactId> 
    <version>1.0</version> 
    ... 

Учитывая не нужны общие модули, чтобы быть доля от родителей к детям POMS, я могу удалить без «рисков» родительскую декларацию в детские помпы? Или Maven действительно нуждается в компиляции модулей?

+0

Что случилось с тем, что декларация '' в детском помпе? то почему вы хотите его удалить? – ulmangt

+0

На самом деле, я хотел бы знать, что этот элемент принимает важную роль в принятии решений относительно компиляции модулей. Действительно, на этом URL-адресе: http://docs.codehaus.org/display/MAVENUSER/Multi-modules+projects указано, что для управления зависимостями требуется родительский элемент. – Mik378

ответ

1

Вам не нужен раздел <parent> в модулях.

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

+0

Обратите внимание, что, учитывая проект с модулями, Maven должен скомпилировать их в правильном порядке для удовлетворения зависимостей. Это соответствует моему опыту с «mvn clean install». –

1

В этом примере вам нужен родительский элемент, потому что у вас есть зависимости между gui и вашим сервисом (услуга также дао). Кроме того, вам необходимо определить зависимости между модулями, чтобы узнать, какой модуль использует. С другой стороны, maven нуждается в этой информации, чтобы предсказать порядок сборки модулей, что важно. Следующим преимуществом такого отношения является определение плагинов/версий зависимостей в родительском модуле и многое другое.

+0

Я пытаюсь скомпилировать целое без родительских элементов, и все произошло хорошо. Не могли бы вы объяснить, почему вы говорите: «Кроме того, вам нужно определить зависимости между модулями, чтобы узнать, какой модуль использует, который». Это для простых знаний для читателя или для истинного внутреннего механизма maven? – Mik378

+0

Этот проект выглядит как типичная многомодульная сборка, в которой используются отношения между родителями и дочерними элементами и отношения между модулями. Если вы можете работать без него, чем хорошо. Но я предполагаю, что у вас есть отношения между модулями. – khmarbaise

+0

Я только что понял, что я неправильно читаю ваш первый комментарий ... Конечно, зависимости BETWEEN модулей, maven нуждается в консолидации решений по компиляции. Я просто пропустил знание родительского модуля для детей, и все в порядке. Благодаря :) – Mik378