Projet multi modules Maven Eclipse

De EjnTricks

Poru des projets "complexes" Maven, il n'est pas rare de mettre en place des projet multi modules. Cette organisation a été expliquée dans la page Projet Maven multi-modules et cet article présente la mise en place d'un tel projet à l'aide de Eclipse.

Le projet mis en place sera réalisé sur l'étude du format YAML.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Vues-icon.png Projet parent

La première étape consiste en la création du projet parent, dans lequel seront référencés les modules. Pour cela, il faut cliquer sur le menu File → New → Project... et y choisir le modèle Maven Project.


Puis il faut cliquer sur le bouton Next pour passer à la spécification de ce projet.


Dans le cadre de ce projet, la création sera effectué sans modèle. Par conséquent, l'option Create a simple project est coché afin de ne pas avoir à sélectionner l'archetype. De plus, le projet peut être ajouté à un Working set, en cochant la case Add project(s) to working set, et en sélectionnant celui souhaité.


En cliquant sur le bouton Next, une fenêtre est affiché afin de spécifier le projet avec les informations classiques Maven comme groupId, artifactId, packaging etc.


Dans le cas présent, l'option Packaging est modifiée avec la valeur pom.


A noter que sur ce formulaire est possible de spécifier le projet parent, ce qui n'est pas utilisé pour ce paragraphe car c'est justement le parent qui est en cours de création.

Le projet est créé en cliquant sur le bouton Finish. Le fichier pom.xml s'ouvre dans un éditeur spécifique.


Multiples-icon.png Modules

Add-file-icon.png Création

Une fois le projet parent créé, il faut créé les modules qui composent l'ensemble. Le principe est exactement le même. Il faut ajouter un projet à l'aide du menu File → New → Project... et y choisir le modèle Maven Module.


En cliquant sur le bouton Next, le formulaire de spécification du module est présenté.


Le bouton Browse..., en face du paramètre Parent Project, permet d'afficher une fenêtre de sélection du projet parent pour le module. Tous les projet connu de l'espace de travail sont présenté.


A noter que lorsqu'un projet parent est sélectionné, dans l'arborescence des projet sur le bandeau de gauche, la propriété Parent Project est complétée avec la sélection.

Sur cette copie d'écran, l'espace de travail est filtré avec un Working Set qui est automatiquement renseigné.

Ce comportement est également observé lorsque l'ajout du module est réalisé depuis le menu contextuel du projet.


Pour cet exemple, le nom du module est renseigné avec la valeur model, la sélection d'un modèle est échappée en cochant la case Create a simple project et le bouton Next est cliqué. Le formulaire de définition du module est alors affiché.


Sur celui-ci, les informations du projet parent sont pré renseignées et non modifiable. La valeur de groupId est également pré rempli. Il suffit juste d'indiquer le nom du module, qui peut être différent de son identifiant renseigné lors de la précédente étape, et sa description. La création est déclenchée en cliquant sur le bouton Finish.

Le module est alors créé et automatiquement ajouté dans le projet parent.


A noter que par défaut le module est ajouté dans l'arborescende du projet parent.

Icon-Configuration-Settings.png Création avec Archetype

Lors des créations précédentes, l'option Create a simple project a été cochée. Sans cette sélection, l'utilisateur doit sélectionner le modèle d'archetype pour la création.


Pour un simple projet Java, le modèle maven-archetype-quickstart est sélectionné et validé en cliquant sur le bouton Next.

Le formulaire de définition est différent et ne permet plus de modifier l'identifiant du module. Contrairement aux précédentes création, il est possible de spécifier le nom du paquet racie pour les classes, dans l'option Package.


Une fois les paramètres spécifiés, la création est effective en cliquant sur le bouton FInish. Le projet est alors disponible et référencé dans le projet parent.


A noter que dans ce cas, la propriété project.build.sourceEncoding est automatiquement ajouté, ainsi que le paramètre URL, qui n'est pas nécessairement la bonne valeur. De plus, ce mode de création entraîne un avertissement dans le contenu du fichier pom.xml qui contient un doublon de définition sur la valeur de groupId qui est identique entre le module et le proet parent. Il est recommandé de résoudre cet avertissement soit en supprimant la valeur, ou en spécifiant une nouvelle valeur différente. De la même façon, la valeur de la Version fait doublon.


Configuration-icon.png Paramétrages

Process-icon.png Propriétés

Dans le cadre de projet multi-modules, il est possible de spécifier des propriétés au niveau du projet parent. Celles-ci seront alors appliquées et disponibles dans les modules. Sur l'éditeur du fichier pom.xml, il faut ouvrir la section Properties.


Le bouton Create entraîne l'ouverture d'un formulaire de définition d'une nouvelle propriété. Il faut spécifier le nom de celle-ci ainsi que la valeur.

Dans le cadre de cette copie d'écran, c'est l'encoding des fichiers qui est spécifié.

Pour modifier une propriété, il suffit de double cliquer dessus et le formulaire s'affiche. Lorsqu'une propriété est sélectionnée, le bouton Remove est rendu disponible afin de supprimer celle-ci.

Dependencies.gif Dépendances

Comme pour les propriétés, il est possible de configurer les dépendances au niveau du projet parent et des modules, dans les deux cas le principe est identiques. La représentation du fichier pom.xml contient l'onglet Dependencies, dans lequel deux zones sont disponibles.


Dans un premier temps, la dépendance sur Junit est ajouté au niveau du projet parent, en cliquant sur le bouton Add.... Un formulaire est alors affiché.


Il suffit de renseigner les informations de la dépendance, et de sélectionner le périmètre de celle-ci dans la liste de choix Scope. Pour JUnit, la valeur choisie est test. Le formulaire est alors complété.


Dans cette présentation, la dépendance a été ajouté à la section Dependencies et sera donc disponible à tous les modules. Cependant, le principe est identique pour la section Dependency Management. Dans ce cas, pour mémoire, la dépendance n'est pas "ajoutée" automatiquement, mais cela permet de centraliser les définitions.

Plugin-icon.png Plugins

Comme pour les dépendances, il est possible d'ajouter les plugins au projet. Cependant, ceci ne s'effectue pas dans la fenêtre d'édition du fichier pom.xml. Il faut se positionner sur le projet, dans l'arborescence de gauche, et sélectionner le menu contextuel Maven → Add Plugin.


Un formulaire est alors affiché.


Il suffit de renseigner les informations du plugin.


A noter qu'il n'est pas possible de renseigner les éléments de configuration du plugin sur ce formulaire.

Dans le cadre de cet exemple, l'ajout entraîne une obsolescence des modules. Des messages d'erreur sont affichés dans l'onglet Problems.


Les modules peuvent être mis à jour à partir du menu contextuel Maven → Update Project....

Un formulaire de paramétrage de l'action est alors présenté.


Sur celui-ci, les projets Maven de l'espace de travail sont présenté pour sélection, avec pré sélection des projets sélectionnés lors du déclenchement de l'outil.

Il suffit de cliquer sur le bouton OK poru déclencher la mise à jour.

Sur le formulaire d'ajout, les éléments de configuration ne peuvent pas être saisis. Dans ce cas, il faut passer dans le mode d'édition du fichier pom. et effectuer les modification manuellement. A noter que l'éditeur propose une aide à la saisie.