Maven
P R ÉSENTÉE PA R :
R I HA B I DOUDI
R I HA B. I DOUDI@ ESPRIT.TN
© 2019 – ESPRIT
© 2019 – ESPRIT
Plan
–C’est Quoi Maven?
–Objectif du Cours
–Création d’un Projet Maven
–Balises POM.XML
–Arborescence Standard
–Buts (Goals)
–Tests
–TP : Projet Sans Maven, Projet Avec Maven
© 2019 – ESPRIT
C’EST QUOI MAVEN?
• Maven est un outil de construction de projets (build) open source développé
par la fondation Apache.
• Il permet de faciliter et d'automatiser certaines tâches de la gestion d'un
projet JavaEE.
© 2019 – ESPRIT
Sans Maven :Difficultés
• Recherche des dépendances sur internet ⇒ perte de temps
• Faire pointer le projet sur un chemin local ⇒ projet qui fonctionne
qu’en local
• Mettre les dépendances dans le projet ⇒ mauvaise pratique
• Compiler avec la ligne de commande ⇒ compliqué
• Utilisation de l’IDE pour compiler ⇒ quoi faire pour livrer ?
© 2019 – ESPRIT
Fonctionalités
• Fonctionnalités
◦ Automatisation de tâches récurrentes
◦ Construction, compilation des projets Gestion des dépendances
◦ Gestion du code source
◦ Génération de la documentation et de rapports Déploiement d'applications
• Modèle de projet basé sur des conventions (POM: Project Object Model)
◦ Configuration basée sur le format XML
© 2019 – ESPRIT
CRÉATION D’UN PROJET MAVEN
© 2019 – ESPRIT
La structure par défaut d’un projet Maven
• pom.xml : le fichier de configuration du projet
• /src : code source et fichiers source principaux
• /src/main/java : code source java
• /src/main/resources : fichiers de ressources (images, fichiers config...)
• /src/main/webapp : webapp du projet
• /src/test : fichiers de test
• /src/test/java : code source Java de test
• /src/test/resources : fichiers de ressources de test
• /target/site : informations sur le projet et/ou les rapports générés
suites aux traitement effectués
• /target : fichiers résultat, les binaires (du code et des tests), les
packages générés et les résultats des tests
© 2019 – ESPRIT
Le POM (Project Object Model)
modelVersion : La version du modèle de POM utilisée
groupId : Le groupe ou l'organisation qui développe le projet. C'est une des clés utilisée pour identifier de
manière unique le projet et ainsi éviter les conflits de noms.
artifactId : C’est le nom du livrable sans version (jar, ear ...).
version : La version en cours du projet (Le suffixe -SNAPSHOT indique une version en cours de
développement).
© 2019 – ESPRIT
Le POM (Project Object Model)
La balise <dependencies> devra
contenir toutes les dépendances
nécessaires au fonctionnement
du projet.
Moteur de recherche des
dépendances Maven :
http://mvnrepository.com
© 2019 – ESPRIT
Le POM (Project Object Model)
Pour utiliser ce plugin : mvn compile exec:java
exec : l’identifiant du plugin
java : l’identifiant du goal
© 2019 – ESPRIT
Le POM (Project Object Model)
maven.compiler.target et
maven.compiler.source sont les
propriétés du plugin Apache
Maven Compiler Plugin, c’est le
plugin qui nous permet de
compiler notre projet Java, ces
propriétés sont utiles pour
spécifier la version du compilateur
souhaitée (source et target).
© 2019 – ESPRIT
BUTS (GOALS)
mvn compile : Créer les .class
mvn test : Jouer les tests unitaires
mvn package : Creation du livrable dans target.
mvn install : Copie du livrable dans le Repository local : ~\.m2\repository\...
mvn deploy : Copie du livrable sur le repository distant
mvn clean : Supprime le contenu du dossier target
© 2019 – ESPRIT
Maven Workflow
© 2019 – ESPRIT
Exemple
© 2019 – ESPRIT