Projet multi modules Maven Eclipse
Pour 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
.
Sommaire
Votre avis
Nobody voted on this yet
|
|
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.
Modules
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 projets connus 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.
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.
Paramétrages
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.
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.
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
pour 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.