MAVEN
Bureau E204
2019-2020 ESPRIT Module SPRING MAVEN
PLAN DU COURS
Fonctionnalit s Maven
Installation Maven
Premier Projet Maven
Arborescence du projet
Etapes de construction du projet
Gestion et port e des d pendances
D p ts Maven
TP : Projet avec Maven (JAR)
TP : Projet Web Avec Maven (WAR)
2019-2020 ESPRIT Module SPRING MAVEN
2
Fonctionnalit s MAVEN
Maven est un outil pour le management et lautomatisation de
production des projets (construction des projets) d velopp par
la fondation Apache permettant :
Lint gration continue
La gestion des d pendances locales et distantes dans le Mod le
de projet bas sur des conventions (POM)
Automatiser la gestion des builds et la g n ration des livrables
Automatisation de t ches r currentes
Le lancement des tests
2019-2020 ESPRIT Module SPRING MAVEN
3
INSTALLATION DE MAVEN
" Maven peut tre install :
En mode standalone
Exemple: Utiliser Maven dans
lint gration continue
(domaine DevOps)
En tant que plugin
Par d faut, STS int gre un plugin Maven
2019-2020 ESPRIT Module SPRING MAVEN
4
INSTALLATION DE MAVEN
" En mode plugin :
2019-2020 ESPRIT Module SPRING MAVEN
5
PREMIER PROJET MAVEN
2019-2020 ESPRIT Module SPRING MAVEN
6
PREMIER PROJET MAVEN
Un projet est caract ris par :
" project : Balise racine de tous les fichiers pom.xml.
" modelVersion : Version de POM utilis e.
" groupId : Identifier un groupe qui a cr le projet. Ex:
org.apache.
" artifactId : Nom unique utilis pour nommer lartifact
construire.
" packaging : Type de packaging du projet ( ex. : JAR,
WAR, EAR...).
" archetype : Template de Projet.
" name : Nom du projet.
" description : Description du projet.
2019-2020 ESPRIT Module SPRING MAVEN
Publicité
7
Gestion des versions du projet
Exercice
Soit les versions du projet suivantes :
1.0
1.1.1
2.0
2.1
3.0
A quoi correspond chaque num rotation ?
Release
Modification majeure
Modification mineure
2019-2020 ESPRIT Module SPRING MAVEN
8
ARBORESCENCE DU PROJET
" Maven est bas sur la notion de convention over
configuration (arborescence pr d finie) ce qui le
diff rencie par rapport ses concurrents (Gradle, Ant) o
une configuration suppl mentaire est requise.
2019-2020 ESPRIT Module SPRING MAVEN
9
ARBORESCENCE DU PROJET
" 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 : fichiers r sultat, les binaires (du code et des tests), les
packages g n r s et les r sultats des tests
2019-2020 ESPRIT Module SPRING MAVEN
10
Fichier POM.XML
Permet de sp cifier les d pendances dont le projet a besoin.
Sp cifie lemplacement de lartifact du projet (groupId, ArtifactId,
version)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.esprit.spring</groupId>
<artifactId>tpMaven</artifactId>
<version>1.0</version>
<name>tpMaven</name>
<description>tpMaven</description>
<dependencies><dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.0</version>
</dependency></dependencies>
</project>
2019-2020 ESPRIT Module SPRING MAVEN
11
Publicité
COMMANDES MAVEN
" En faisant un click droit sur votre projet Maven, tu auras les commandes
suivantes:
" Par exemple, en cliquant sur Maven Install, un ensemble d tapes de
construction du projet vont sex cuter les unes apr s les autres et ceci va
mettre jour votre Repository local avec lensemble des livrables et
d pendances n cessaires pour le bon fonctionnement du projet.
2019-2020 ESPRIT Module SPRING MAVEN
12
Etapes de construction du projet
Un cycle de vie est constitu de phases cons cutives aboutissant la
cr ation de lartifact de notre projet (jar, war, etc..)
2019-2020 ESPRIT Module SPRING MAVEN
13
Etapes de construction du projet
" mvn compile : Cr er les .class
" mvn test : Jouer les tests unitaires
" mvn package : Cr ation 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-2020 ESPRIT Module SPRING MAVEN
14
Etapes de construction du projet
" Emplacement du livrable :
{emplacement Repository}/groupId/artifactId/version
" Nom du package (jar en g n ral) : {artifactId}-{version}.{package}
2019-2020 ESPRIT Module SPRING MAVEN
15
Gestion et port e des d pendances
Pour ajouter une d pendance, il suffit de chercher la d pendance
en question dans le mvnRepository (https://mvnrepository.com/) et
linclure dans le pom.xml sous la balise <dependencies> comme suit :
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
2019-2020 ESPRIT Module SPRING MAVEN
16
Gestion et port e des d pendances
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
Le scope precise la port e de la d pendance :
compile : par default, disponible dans tous les classpath
provided : disponible seulement pour le classpath de compilation
runtime : disponible pour lex cution (runtime et test classpaths)
test :disponible seulement lors du lancement des tests ( test classpath)
2019-2020 ESPRIT Module SPRING MAVEN
17
Gestion et port e des d pendances
Publicité
2019-2020 ESPRIT Module SPRING MAVEN
18
D p ts Maven
" Maven sappuie sur les d p ts ( repositories) pour stocker les jars des
d pendances et des livrables.
" Ce d p t peut tre :
Distant : que ce soit le d p t public Maven accessible via
https://mvnrepository.com/ ou priv e (d p t sp cifique la soci t )
Local : Le d p t local se trouve par d faut sous larborescence
%path_dossier_M2%\repository
Priv : dans les serveurs d di s lentreprise ( pour des raisons de
s curit )
" Les d p ts sont organis s en groupes, artefacts et versions
2019-2020 ESPRIT Module SPRING MAVEN
19
Multi projets Maven (Optionnel)
Avec Maven, il est possible davoir un projet compos de sous projets en
respectant une architecture arboresente
Module Enfant
pom Module Enfant : h rite les propri t s du pom
parent et sp cifie les besoins propres ce module
Module Parent
2019-2020 ESPRIT Module SPRING MAVEN
20
TP1 Projet avec Maven (JAR)
" Cr er un Projet Maven :
" Simple : sans archetype, type Jar, groupId : tn.esprit
" artefactId / nom / description : tpMavenWithJar
" package : tn.esprit
" Mettre jour le pom.xml pour utiliser Java 1.8
" Cr er le package : tn.esprit
" Cr er la Classe : RepositoryLocation (Voir Code Source pages
suivantes).
" Cr er le livrable avec Maven
" Ex cuter la m thode main.
2019-2020 ESPRIT Module SPRING MAVEN
21
TP1 Projet avec Maven (JAR)
package tn.esprit;
import java.io.File;
public class RepositoryLocation {
public static void main(String[] args) {
File file = new File("C:\\Users\\nameUser\\.m2\\repository\\tn\\esprit\\1.0");
String absolutePath = file.getAbsolutePath();
String filePath =absolutePath.substring(0,absolutePath.indexOf(File.separator,
30));
System.out.println("Le dossier contenant les d pendances "
+ "et les livrables des projets est : ");
System.out.println( filePath);
}
}
2019-2020 ESPRIT Module SPRING MAVEN
22
TP1 Projet avec Maven (JAR)
<project
&&
<modelVersion>4.0.0</modelVersion>
<groupId>tn.esprit</groupId>
Publicité
<artifactId>tpMavenWithJar</artifactId>
<version>1.0</version>
<name>tpMavenWithJar</name>
<description>tpMavenWithJar</description>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
</project>
2019-2020 ESPRIT Module SPRING MAVEN
23
TP2 Projet Web avec Maven (WAR)
" Cr er un nouveau projet de type Maven, simple (sans archetype)
" Projet de type WAR
2019-2020 ESPRIT Module SPRING MAVEN
24
TP2 Projet Web avec Maven (WAR)
" Corriger lerreur et le warning ci-dessous :
2019-2020 ESPRIT Module SPRING MAVEN
25
TP2 Projet Web avec Maven (WAR)
" Correction de lerreur web.xml missing , tout projet web doit contenir
un fichier web.xml, cliquer sur Generate & pour le g n rer :
2019-2020 ESPRIT Module SPRING MAVEN
26
TP2 Projet Web avec Maven (WAR)
" Correction du warning Java 1.5 , Pointer sur Java 8 :
" Ajouter dans pom.xml les propri t s suivantes :
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
" Puis, Faites un Maven Update.
2019-2020 ESPRIT Module SPRING MAVEN
27
TP2 Projet Web avec Maven (WAR)
" Faites un Maven Update.
2019-2020 ESPRIT Module SPRING MAVEN
28
TP2 Projet Web avec Maven (WAR)
" Ajouter une page web basique index.html :
2019-2020 ESPRIT Module SPRING MAVEN
29
TP2 Projet Web avec Maven (WAR)
" D ployer lapplication sur Tomcat, et lancer lURL :
http://localhost:8080/maven-web
2019-2020 ESPRIT Module SPRING MAVEN
30
MAVEN
Si vous avez des questions, nh sitez pas nous
contacter :
D partement Informatique
UP Architectures des Syst mes d'Information
Bureau E204
2019-2020 ESPRIT Module SPRING MAVEN