Avec Objis, à travers ce tutoriel MAVEN, maîtrisez l’installation pas à pas de MAVEN, un outil de la brique ‘build’ d’une chaîne d’intégration continue . Créez un projet maven simple. Analysez l’arborescence de ce projet. Comprenez la notion de ‘Repository local’. Découvrez ce qu’est une phase MAVEN. Mettez en oeuvre les phases ‘compile’, ‘test’, ‘package’, ‘clean’, ‘install’, ‘site’. Pour aller plus loin, offrez-vous notre formation Intégration Continue (5j).
Auteur
Prérequis
Installation Java 8
Objectifs
- Maîtriser l’installation de Maven 3
- Comprendre les phases MAVEN et les mettre en œuvre
- Créer un projet MAVEN simple via le plugin Maven ‘archetype’
- Maîtriser la compilation, le test, le packaging d’une application avec MAVEN
- Installer une application dans un repository local (USER_HOME\.m2\repository)
- Comprendre l’enchaînement de phases
- Générer le site web du projet avec Maven 3
Programme
- Installer Maven
- Comprendre la notion de ‘phase’ Maven
- Générer le site du projet
- Personnaliser le site du projet
Durée
1h
Partie 1 : Installation Maven
Etape 1
Téléchargez et dézipper l’archive courante de MAVEN, par exemple apache-maven-3.6.3-bin.zip. Vous obtenez le répertoire similaire au suivant
Analysez le contenu du répertoire bin
QUESTION : à quoi sert le fichier m2.conf ?
Analysez le contenu du répertoire conf.
QUESTION : à quoi sert la balise ‘localRepository’ présente dans le fichier settings.xml
Etape 2
Ajouter la variable d’environnement utilisateur M3_HOME avec pour valeur le chemin du répertoire apache-maven-3.2.2 (Ex: C:formationmavenoutilsapache-maven-3.2.2-bin)
— Sous win7/Win8 : Explorateur (touche Windows + E) / clique droit sur Ordinateur / Propriétés / Paramètre système avancés / Bouton Variable d’environnement / Nouvelle…
Etape 3
Dans la même boîte de dialogue, ajouter la variable d’environnement M3 , avec comme valeur %M3_HOME%bin
Etape 4
Créez ou mettez à jour la variable d’environnement PATH avec %M3%
Etape 5 (Optionnel)
Dans la même boîte de dialogue, ajouter la variable d’environnement MAVEN_OPTS pour spécifier paramètres JVM , par exemple -Xms256m -Xmx512m
Etape 6
Assurez-vous que la variable d’environnement JAVA_HOME pointe bien sur le répertoire d’installation du JDK, et que %JAVA_HOME%bin est bien dans la variable PATH.
Etape 7
Lancez une nouvelle commande MS-DOS et exécuter : mvn –version pour avoir la version de Maven installées
Démarrer/Programmes/Accesoires/Invite de commandes
BRAVO ! Maven est correctement installé sur votre ordinateur. Reste à découvrir et mettre en oeuvre la notion de ‘phase’
Partie 2 : phases MAVEN
Dans la deuxième partie de ce tutoriel MAVEN, vous allez mettre en pratique la notion de ‘Phase’ MAVEN
Besoin : comprendre les phases Maven
Maven associe à tout projet MAVEN des phases . A chacune de ces phases est associé/déclenché par défaut des taches mises en oeuvre par des plugins.
Dans le cycle de vie ‘par défaut’ d’un projet Maven, les phases les plus utilisées sont :
- validate : vérifie les prérequis d’un projet maven
- compile : compilation du code source
- test : lancement des tests unitaires
- package : assemble le code compilé en un livrable
- install : partage le livrable pour d’autres projets sur le même ordinateur
- deploy : publie le livrable pour d’autres projets dans un ‘repository’ distant
Les phases s’exécutent de façon séquentielle de façon à ce qu’une phase dépende de la phase précédente.
Par exemple, le lancement par l’utilisateur de la phase test (mvn test) impliquera le lancement préalable par maven des phases ‘validate‘ et ‘compile‘.
ACTION : lancez une commande maven ‘vide’ , c’est à dire tapez uniquement ‘mvn’ en ligne de commande. Maven signale une erreur et précise la liste des phases disponible. Quelle est la liste des phases de maven 3 ?
- validate
- initialize
- generate-sources
- process-sources
- generate-resources / process-resources
- compile
- process-classes
- generate-test-sources / process-test-sources
- generate-test-resources / process-test-resources
- test-compile
- process-test-classes
- test
- prepare-package
- package
- pre-integration-test / integretion-test / post-integration-test
- verify
- install
- deploy
- pre-clean / clean / post-clean
- pre-site / site / post-site
- site-deploy
REMARQUE : Cette partie ne traite pas de plugin ni de taches (Goals). Cette partie a pour objectif de vous faire comprendre et mettre en oeuvre des phases MAVEN.
Mise en oeuvre
Crééez le répertoire : C:\formationmaven\TPs\TP1
Dans le répertoire créé, exécutez la commande suivante :
mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.objis.mavenapps -DartifactId=monappli -Dversion=1.0-SNAPSHOT -DpackageName=com.objis.mavenapps
— Que se passe t’il ?
Il semble que plusieurs fichiers soient téléchargés sur votre ordinateur.
QUESTION : quels types de fichiers sont téléchargés ? et où sont t’ils déposés ?
INFO : la commande archetype:generate est présentée dans le tutoriel 2 ‘création de projet Maven’ et utilisée en mode dit ‘interactif’ . Ici cette commande est utilisée en mode dit ‘batch’, d’ou l’option -B
Analysez le répertoire .m2 créé par maven dans votre répertoire utilisateurs système ($HOME sous unix, Documents and Settings pour winxp):
Expliquez
Observez la création par maven :
— du répertoire ‘monappli’
— du fichier pom.xml à la racine du répertoire monappli
— des sous répertoire src/main/java (code source) et src/test/java (code tests)
Analysez le contenu du sous-répertoire mavenapps
Editez le fichier App.java (par exemple avec éditeur Notepad++)
Expliquez
De même, éditez le fichier src/test/java/TestApp.java
Expliquez
Analysez le contenu du fichier pom.xml
— Qu’est ce que le fichier xsd référencé par http://maven.apache.org/xsd/maven-4.0.0.xsd ?
— Qu’est ce que le groupId ? l’ artifactId ? la ‘version‘ ?
En déduire les ‘coordonnées MAVEN’ de l’application monappli
— Qu’est ce que les ‘dependencies‘ ?
— A quoi sert la balise ‘scope’ de la dépendence Junit ?
Citez d’autres balises que l’on peut retrouver dans ce fichier pom.xl
PHASE Compilation
A partir du répertoire ‘monappli’, lancez la commande : mvn compile
— Que se passe t’il ?
Ajouter la section suivante (Télécharger) pour configurer le compilateur avec la bonne version
Relancez la commande mvn compile.
Analysez le contenu tu répertoire monappli/target généré
PHASE Test
Lancez la commande : mvn test
— Que se passe t’il ?
Analysez le contenu tu répertoire monappli/target généré
Analysez le contenu tu répertoire monappli/target/surefire-reports généré
Expliquez
PHASE Packaging
Lancez la commande : mvn package
— Que se passe t’il ?
Analysez le contenu tu répertoire monappli/target généré
— Quelle relation avec mvn compile ?
Lancez la commande :
java -cp target/monappli-1.0-SNAPSHOT.jar com.objis.mavenapps.App
— Que se passe t’il ?
PHASE Install
Lancez la commande : mvn install
— Que se passe t’il ?
Qu’est ce qu’un repository local ?
Quel est le repository local par defaut ? Comment le changer ?
Montrez que le jar de l’application est désormais dans le repository local. A quel endroit ?
Confirmez la création du jar monappli-1.0-SNAPSHOT.jar dans le répertoire %USER_HOME%/.m2/repository/com/objis/demomaven
Nettoyage
Lancez la commande : mvn clean
— Que se passe t’il ?
Constatez la suppression du répertoire ‘target’
Enchaînement de phases
Lancez la commande : mvn clean install
— Que se passe t’il ?
Partie 3 (OPTIONNEL) : Génération site web projet
Pour voir le site du projet, déclarer le plugin maven-site-plugin dans la section ‘build’ , puis préciser les types de rapports souhaités
Etape 1 : Déclaration plugin ‘site’
Ajouter la déclaration suivante (correspondant au code suivant) dans le pom.xml, juste au dessus de la section ‘dependencies’ :
Expliquez.
Lancez la commande ‘mvn site’ . Que se passe t’il ?
Supprimer la ligne concernant la version
relancez la commande : mvn site.
Constatez la création du répertoire ‘target/site’
Ouvrir le fichier index.html de ce répertoire avec votre navigateur
Maven a généré le site internet de votre projet. Ce site , mis à jour, constitue un outil de communication pour l’ensemble de l’équipe de développement.
Cliquez sur le lien ‘Dependencies’
— Quel lien avec notre fichier pom.xml ?
Expliquez les autres liens du menu (gauche) du site :
- about
- Continous integration
- Issue tracking
- Mailing list
- Plugin Management
- Project License
- Project Summary
- Project Team
- Source Repository
QUESTION : comment faire pour que ce rapport soit en français ? (utiliser la documentation suivante)
Partie 4 (OPTIONNEL) : Personnalisation du site web projet
Etape 1 : création fichier site.xml
Créez un répertoire src/site
Dans ce répertoire, créez un fichier site.xml
Analysez le contenu du fichier (correspondant au code suivant):
Lancez mvn site à nouveau
Analysez le contenu de targetsite
Ouvrez le fichier index.html
Expliquez le lien entre cette interface et le fichier site.xml
Ajoutez une nouvelle section menu de gauche.
Projet monappli version maven 3
Conclusion
Dans ce tutoriel vous avez fait vos tout premiers pas avec MAVEN , outil standard pour la brique ‘build’ des projets Maven.
Vous avez installé maven et créé un squelette de projet Maven . Vous vous êtes également initié aux phases d’un projet Maven, en particulier les phases ‘compile’, ‘test’, ‘package’, ‘clean’, ‘site’.
Aller plus loin avec nos tutoriels MAVEN
Dans ce tutoriel vous avez utilisé la commande suivante pour créer un squelette de projet Maven :
mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.objis.mavenapps -DartifactId=monappli -Dversion=1.0-SNAPSHOT -DpackageName=com.objis.mavenapps
QUESTION : avez-vous vraiment compris cette commande ? Qu’est ce qu’un ‘archetypeArtifactId‘ ?
Dans le tutoriel Maven N°2 ‘création projet Maven‘, vous allez mieux découvrir le plugin ‘Archetype’ qui vous a permis de créer le squelette d’un projet Maven (mvn archetype:generate).
Alors que vous l’avez utilisé ici dans le mode ‘Batch’ (-B) vous allez apprendre à l’utiliser dans le mode dit ‘interactif’.
Aller plus loin avec notre formation professionnelle
Gagnez du temps. Améliorez la qualité de votre code. Travaillez mieux en équipe. Éliminez les régressions. Améliorer l’assurance qualité. Choisissez Objis pour votre formation ‘Intégration Continue’ avec Git, Maven, Jenkins, Nexus, Sonar. Bénéficiez du savoir-faire technique et pédagogique d’Objis pour monter en compétence sur Maven et d’autres outils standards d’une usine logicielle.