MAVEN Course Document

Programming, Project Management · course

Voir tous les documents en gestion et économie

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