2012-04-15 5 views
1

En écrivant pour la première fois un multi-modules Maven Pom, je me demande quelque chose.Multi-Modules maven pom

d'abord, voici mon pom parent:

... 
    <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> 
    ... 

et l'un de ses enfants:

 ... 
    <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> 
    ... 

Considérant que je ne ai pas besoin de modules communs pour être part de la mère à poms enfants, puis-je supprimer sans "risques" la déclaration parent dans les poms enfants? Ou Maven en a-t-il besoin pour la compilation de modules?

+0

Quel est le problème d'avoir la déclaration '' dans les poms enfants? c'est-à-dire pourquoi voulez-vous l'enlever? – ulmangt

+0

En fait, j'aimerais savoir si cet élément joue un rôle important dans les décisions concernant la compilation de modules. En effet, à cet url: http://docs.codehaus.org/display/MAVENUSER/Multi-modules+projects, il est indiqué que l'élément parent est nécessaire pour gérer les dépendances. – Mik378

Répondre

1

Vous n'avez pas besoin de la section <parent> dans les modules. Cela signifie principalement que chaque module doit être indépendant - vous ne pouvez pas partager des sections de configuration via le parent.

+0

Notez que donné un projet avec des modules, Maven devrait les compiler dans le bon ordre pour satisfaire les dépendances. Ceci est cohérent avec mes expériences avec "mvn clean install". –

1

Dans cet exemple, vous avez besoin de l'élément parent, car vous avez des dépendances entre gui et votre service (service à dao aussi). De plus, vous devez définir les dépendances entre les modules pour voir quel module utilise lequel. D'autre part, maven a besoin de cette information pour prédire l'ordre de construction des modules ce qui est important. Le prochain avantage d'avoir une telle relation est que vous pouvez définir les plugins/versions de dépendances dans le module parent et bien d'autres choses.

+0

J'essaie de compiler le tout sans éléments parents et tout s'est bien passé. Pourriez-vous expliquer pourquoi vous dites que: "De plus, vous devez définir les dépendances entre les modules pour voir quel module utilise qui." Est-ce pour une connaissance simple pour le lecteur ou pour un véritable mécanisme interne maven? – Mik378

+0

Ce projet ressemble à une construction multi-module typique qui utilise des relations parent/enfant et des relations entre les modules. Si vous pouvez travailler sans ça, d'accord. Mais je suppose que vous avez des relations entre les modules. – khmarbaise

+0

Je viens de réaliser que j'ai mal lu votre premier commentaire ... Bien sûr dépendances entre les modules, maven a besoin de consolider les décisions sur la compilation. J'ai juste ignoré la connaissance des modules parent pour enfants et tout va bien. Merci :) – Mik378