Tutoriel maven N°3 : projet multi-modules

////Tutoriel maven N°3 : projet multi-modules

Avec Objis, spécialiste formation MAVEN (3j) et formation intégration continue (5j),
, maîtrisez la création d’un projet multi module avec maven. Identifiez les différents modules de l’application. Générez le pom.xml du projet parent ainsi que le pom.xml des modules. Comprenez les concepts de composition et d’héritage. Enfin optimisez les pom.xml

Liens utiles

Projet multi-modules Maven (page officielle)

Multi-module sur le Maven book

Prérequis, outils et versions

Tutoriel Maven N°1 : Installation Maven

Objectifs

Comprendre la création d’un projet multi-modules maven

Comprendre les dépendances entre modules

Comprendre les concepts clés : composition et héritage

Programme

Contexte et architecture projet

Partie 1 : création projet parent

Partie 2 : création des modules

Partie 3 : compilation du parent

Partie 4 : livraison war

Durée

30min

PUBLICITE : votre formation ‘Intégration continue’ avec Objis

formation-integration-continue-usine-logicielle-objis-maillons

Contexte

Vous avez en charge un projet ‘monappli’ impliquant 4 modules :

– monappli-dao

– monappli-service

– monappli-domaine

– monappli-web

Partie 1 : création projet parent

A partir d’un nouveau répertoire TP3 (vide), créez projet parent (version 1.0-SNAPSHOT) de type ‘quickstart‘ (Pour le mode quickstart tapez [Entrée] à chaque question posée):

mvn archetype:generate -DgroupId=com.objis.demomaven -DartifactId=monappli

dans le répertoire ‘monappli’ généré :

— supprimez le répertoire src

— modifiez en ‘pom’ le contenu de la balise packaging , initialement à ‘jar’

Ainsi le pom initial suivant :

tutoriel-maven-projet-multi-modules-1

devient :

tutoriel-maven-projet-multi-modules-2

ça y est : vous venez de créer un ‘projet parent’ ! BRAVO !

Reste à créer les modules dans la partie suivante. Cela nous permettra de toucher du doigt deux techniques clés caractéristique des projets multimodule Maven : la composition (le parent déclare ses modules) et l’héritage (l’enfant déclare son parent). Ces techniques se traduisent par des sections précises dans le pom.xml

Partie 2 : création des modules

Objectif : créer pour chacun des livrables service, domain, dao un JAR

Couche domaine

À partir du répertoire ‘monappli’ du projet parent, lancez en mode quickstart :

mvn archetype:generate -DgroupId=com.objis.demomaven -DartifactId=monappli-domaine

Analysez le contenu du pom.xml du module

Expliquez

QUESTION : quel impact sur le pom parent ?

tutoriel-maven-projet-multi-modules-3

Expliquez

Couche service

À partir du répertoire ‘monappli’ du projet parent, lancez en mode quickstart :

mvn archetype:generate -DgroupId=com.objis.demomaven -DartifactId=monappli-service

QUESTION : quel impact sur le pom parent ?

Couche dao

À partir du répertoire ‘monappli’ du projet parent, lancez en mode quickstart :

mvn archetype:generate -DgroupId=com.objis.demomaven -DartifactId=monappli-dao

QUESTION : quel impact sur le pom parent ?

Couche web

Pour le projet web créez un projet de type war

mvn archetype:generate -DgroupId=com.objis.demomaven -DartifactId=monappli-web

Choisissez le type de projet maven-archetype-webapp (pour trouver le numero faire clique droit + Rechercher… dans la Console)

Analysez ensuite arborescence du projet global :

tutoriel-maven-projet-multi-modules-4

Partie 3 : compilation du parent

A partir du répertoire du projet parent lancez : mvn compile

tutoriel-maven-projet-multi-modules-5

Expliquez le résultat. En particulier, expliquez le lien entre l’ordre de déclaration des modules dans le pom.xml parent et l’ordre de compilation des modules.

QUESTION : qu’appelle t’on la ‘composition’ (ou Aggregation) dans MAVEN ? Quelle valeur ajoutée ?

Partie 4 : livraison war

L’objectif du projet est la livraison d’une application web (WAR) contenant :

— le jar du module domaine

— le jar du module service

— le jar du module dao

Lancez à partir du projet parent : mvn package

Analysez le contenu du fichier war généré , en particulier WEB-INF/lib

tutoriel-maven-projet-multi-modules-6

Contient’il les jars des autres modules ? Pourquoi ?

tutoriel-maven-multi-module-livrable-war-sans-gestion-dependances-domaine-dao-service

<doc5123|center>

QUESTION : comment obtenir le résultat attendu : un war contenant dans répertoire WEB-INFlib les jars de la couche domaine, de la couche dao et de la couche service. C’est ce que vous apprendrez au prochain TP : gestion des dépendances

CORRECTION

monappli

Conclusion

Dans ce tutoriel, vous avez mis en oeuvre un projet multi modules Maven. Dans le prochain tutoriel, vous allez apprendre à gérer les dépendances entre modules.

PUBLICITE : votre formation ‘Intégration continue’ avec Objis

formation-integration-continue-usine-logicielle-objis-maillons

2018-11-06T12:37:31+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java