0% ont trouvé ce document utile (0 vote)
149 vues35 pages

Guide Pratique Maven pour Développeurs Java

Ce document décrit l'utilisation de Maven pour gérer des projets Java et JEE. Maven est un outil qui simplifie la construction de projets et la gestion de leurs dépendances à travers des fichiers pom.xml. Le document explique comment créer des projets avec Maven, leur structure et comment gérer les dépendances dans le fichier pom.xml.

Transféré par

zakaria aissari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
149 vues35 pages

Guide Pratique Maven pour Développeurs Java

Ce document décrit l'utilisation de Maven pour gérer des projets Java et JEE. Maven est un outil qui simplifie la construction de projets et la gestion de leurs dépendances à travers des fichiers pom.xml. Le document explique comment créer des projets avec Maven, leur structure et comment gérer les dépendances dans le fichier pom.xml.

Transféré par

zakaria aissari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Maven

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

[email protected]

H & H: Research and Training 1 / 23


Plan

1 Introduction

2 Un Java Project avec Maven

3 Un projet JEE avec Maven

4 Le fichier pom.xml

5 La gestion de dépendances

6 Maven via CLI

H & H: Research and Training 2 / 23


Introduction

Maven

Maven, c’est quoi ?


I c

H
Un générateur de squelette pour des projets Java ou JEE (il
EL
U
simplifie donc le processus de construction)

L MO (comme npm pour


Aussi, un gestionnaire de dépendance
JavaScript, Composer r e E PHP)
fpour
c h
Utilisantcun A

Object Model)
fichier de configuration pom.xml (pour Project

H & H: Research and Training 3 / 23


Un Java Project avec Maven

Maven
Comment créer un Java Project avec Maven
Aller dans File > New > Other
Chercher puis sélectionner Maven Project
I c

Cliquer sur Next
ELH
U
MO
Choisir maven-archetype-quickstart
L
Remplir les champsref
E
Group A
c h
c Id avec org.eclipse
Artifact Id avec first-maven
Package avec org.eclipse.main

Valider et attendre la fin des téléchargements (vérifier la présence


du fichier pom.xml)
H & H: Research and Training 4 / 23
Un Java Project avec Maven

Maven

Arborescence d’un projet Maven (quickstart) ≡ Java Project


I c

/src : les sources du projet
ELH
/src/main/java : code source OU
L M
ef
/src/test : fichiers de
r E
test
c h
c A : code source de test
/src/test/java

...

H & H: Research and Training 5 / 23


Un projet JEE avec Maven

Maven

Comment créer un projet JEE avec Maven


Aller dans File > New > Maven Project
Cliquer sur Next
I c

Choisir maven-archetype-webapp UE
LH
L MO
fE
Remplir les champs

h r e
cId avec first-jee-maven
Group Id avec org.eclipse

c
ArtifactA
Package avec org.eclipse.controller

Valider et attendre la fin de téléchargements (vérifier la présence


du fichier pom.xml)

H & H: Research and Training 6 / 23


Un projet JEE avec Maven

Maven

Si le projet est signalé en rouge


Aller Project > Properties > Targeted Runtimes
I c

ELH
Sélectionner un serveur de la liste ou ajouter un nouveau en
U
MO
cliquant sur New

f E L
Ensuite valider en cliquant sur Apply and Close
c hre
c A

H & H: Research and Training 7 / 23


Un projet JEE avec Maven

Maven

Si le projet est signalé en rouge


Aller Project > Properties > Targeted Runtimes
I c

ELH
Sélectionner un serveur de la liste ou ajouter un nouveau en
U
MO
cliquant sur New

f E L
Ensuite valider en cliquant sur Apply and Close
c hre
Exécuter c A

Lancer le serveur puis aller sur
http://localhost:8080/first-jee-maven/

H & H: Research and Training 7 / 23


Un projet JEE avec Maven

Maven

Arborescence d’un projet Maven (webapp) ≡ JEE Application


/src : les sources du projet
/src/main/java : code source I c

H
EL (images...)
/src/main/resources : fichiers de U
ressources
M O
f E
/src/main/webapp : webapp L du projet

c h rede test
c A : code source de test
/src/test : fichiers

/src/test/java
/src/test/resources : fichiers de ressources de test
...

H & H: Research and Training 8 / 23


Un projet JEE avec Maven

Maven

I c
Remarque (pour les projets JEE)
E L H
À la création d’une Servlet dans unO U
L M projet JEE avec Maven, ce

re f E
dernier enregistre automatiquement cette servlet dans le
web.xml
c h
c A

H & H: Research and Training 9 / 23


Le fichier pom.xml

Maven

Éléments de base d’un fichier pom.xml

project : c’est la balise racine de ce fichier

I c
E L H
modelVersion : c’est la version actuelle d’Apache Maven 4.0.0.

permettre de retrouver plus facilement M


U
O le projet.
groupId : ll permet d’identifier le groupe créateur
et rapidement
du projet. Cet identifiant doit

artifactId : il contiente
E L
le fnom du projet.
c h r
version : il prA
c
encours) soit RELEASE (pour les versions terminées)
les versions
écise le numéro de la version du projet plus soit SNAPSHOT (pour

description : elle contient une description du projet.

...

H & H: Research and Training 10 / 23


La gestion de dépendances

Maven

Pour gérer les dépendances

Il y a une section (une balise) <dependencies>


</dependencies> contenant des balises <dependency>
I c
</dependency>
E L H
Dans les balises <dependency> O
U
enM
</dependency>, on définit
les dépendances d’un projetL
suivantes
h r e fE utilisant les sous-balises

A c
c
groupId
artifactId
version
...

H & H: Research and Training 11 / 23


La gestion de dépendances

Maven

I c

Où trouver ces dépendances ?
ELH
U
Dans le repository Maven
L MO
f E
hre
https://mvnrepository.com/
c
c A

H & H: Research and Training 12 / 23


La gestion de dépendances

Maven

Comment ajouter des dépendances ?


I c

H
EL la dépendance
Soit en cherchant dans le repository et en copiant
U
dans pom.xml (source)
L MO
h r e fE
Soit en allant sur l’onglet Dependencies de pom.xml, de cliquer

A c
sur Add, chercher et sélectionner une dépendance puis valider en
c et attendre le téléchargement.
enregistrer

H & H: Research and Training 13 / 23


La gestion de dépendances

<?xml version="1.0" encoding="UTF-8"?> <!-- Exemple -->


<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse</groupId>
<artifactId>first-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
I c

<packaging>jar</packaging>
ELH
<name>first-maven</name>
U
MO
<url>http://maven.apache.org</url>

<properties>
f E L
hre
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
c
c A
</properties>

<dependencies>
<dependency>

<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.24</version>
</dependency>
</dependencies>
</project>
H & H: Research and Training 14 / 23
Maven via CLI

Maven
CLI : Command Line Interface (interface en ligne de commande)

Une interface permettant à l’utilisateur de communiquer avec la


machine en utilisant des lignes de commande
Les commandes
I c

H
EL IDE...
peuvent être exécutées à partir d’une console,
U
ont la forme command options
L MO dataOrFiles

h r e fE
A c
c

H & H: Research and Training 15 / 23


Maven via CLI

Maven
CLI : Command Line Interface (interface en ligne de commande)

Une interface permettant à l’utilisateur de communiquer avec la


machine en utilisant des lignes de commande
Les commandes
I c

H
EL IDE...
peuvent être exécutées à partir d’une console,
U
ont la forme command options
L MO dataOrFiles

h r e fE
A c

Exemple de cconsole
Invite de commande
PowerShell
Cmder (Open-source acceptant les commandes Unix)
H & H: Research and Training 15 / 23
Maven via CLI

Maven
Télécharger, installer et lancer Cmder
https://cmder.net/

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 16 / 23


Maven via CLI

Maven
Télécharger, installer et lancer Cmder
https://cmder.net/

Pour vérifier la version de maven

I c

mvn --version

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 16 / 23


Maven via CLI

Maven
Télécharger, installer et lancer Cmder
https://cmder.net/

Pour vérifier la version de maven

I c

mvn --version

ELH
U
Ou le raccourci
L MO
f E
hre
mvn -v
c
c A

H & H: Research and Training 16 / 23


Maven via CLI

Maven
Télécharger, installer et lancer Cmder
https://cmder.net/

Pour vérifier la version de maven

I c

mvn --version

ELH
U
Ou le raccourci
L MO
f E
hre
mvn -v
c
Le résultat
c A

Apache Maven 3.5.3 (...; 2018-02-24T20:49:05+01:00)
Maven home: C:\apache-maven-3.5.3\bin\..
Java version: 1.8.0_191, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jre1.8.0_191
Default locale: fr_FR, platform encoding: Cp1252
OS name: "windows10", version: "10.0", arch: "amd64", family: "windows"

H & H: Research and Training 16 / 23


Maven via CLI

Pour créer un projet maven (copier la en une seule ligne)


mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeGroupId={archetype-groupId}
-DarchetypeArtifactId={archetype-name}
-DinteractiveMode=false

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 17 / 23


Maven via CLI

Pour créer un projet maven (copier la en une seule ligne)


mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeGroupId={archetype-groupId}
-DarchetypeArtifactId={archetype-name}
-DinteractiveMode=false

I c

Explication
ELH
U
mvn archetype:generate la commande permettant de générer un projet maven
Ce qui vient après : la liste des options
L MO
f E
-DgroupId={project-packaging} : structure des packages du projet

c hre
-DartifactId={project-name} : nom du projet

c A

-DarchetypeArtifactId={archetype-name} : nom du archetype ou le type
du projet
-DarchetypeGroupId={archetype-groupId} : l’identifiant du groupe de
l’archétype (valeur par défaut org.apache.maven.archetypes)

-DinteractiveMode=false (facultatif) : pour éviter de demander des


confirmations et d’afficher des messages détaillant les différentes phase du
génération du projet

H & H: Research and Training 17 / 23


Maven via CLI

Maven
Pour créer un Java Project avec maven (copier la en une seule ligne)
mvn archetype:generate
-DarchetypeArtifactId=maven-archetype-quickstart
-DgroupId=org.eclipse.classes
-DartifactId=MavenJavaProject
-DinteractiveMode=false
I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 18 / 23


Maven via CLI

Maven
Pour créer un Java Project avec maven (copier la en une seule ligne)
mvn archetype:generate
-DarchetypeArtifactId=maven-archetype-quickstart
-DgroupId=org.eclipse.classes
-DartifactId=MavenJavaProject
-DinteractiveMode=false
I c

ELH
U
Remarque
L MO
f E
hre
L’artifactId de l’archétype quickstart est maven-archetype-quickstart
c
c A
Le groupId de l’archétype quickstart est org.apache.maven.archetypes

On n’a pas précisé le groupId ici car sa valeur correspond à la vleur par défaut
considérée par Maven

H & H: Research and Training 18 / 23


Maven via CLI

Maven
Pour créer un Java Project avec maven (copier la en une seule ligne)
mvn archetype:generate
-DarchetypeArtifactId=maven-archetype-quickstart
-DgroupId=org.eclipse.classes
-DartifactId=MavenJavaProject
-DinteractiveMode=false
I c

ELH
U
Remarque
L MO
f E
hre
L’artifactId de l’archétype quickstart est maven-archetype-quickstart
c
c A
Le groupId de l’archétype quickstart est org.apache.maven.archetypes

On n’a pas précisé le groupId ici car sa valeur correspond à la vleur par défaut
considérée par Maven

Ensuite, se déplacer dans le projet


cd MavenJavaProject

H & H: Research and Training 18 / 23


Maven via CLI

Maven
Arborescence générée (contenant 3 fichiers sources App.java, AppTest.java
et pom.xml)

install-maven-tutorial
|--pom.xml
--src
I c

----main
ELH
------java
U
--------org
L MO
----------eclipse
f E
hre
------------classes
|--------------App.java
c
----test c A

------java
--------org
----------eclipse
------------classes
|--------------AppTest.java

H & H: Research and Training 19 / 23


Maven via CLI

Maven

Contenu de App.java
package org.eclipse.classes;

/**
I c

* Hello world!
ELH
U
MO
*
*/
f E L
hre
public class App
c
c A
{

public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

H & H: Research and Training 20 / 23


Maven via CLI

Pour compiler le projet et générer le .jar dans le dossier target target


mvn compile package

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 21 / 23


Maven via CLI

Pour compiler le projet et générer le .jar dans le dossier target target


mvn compile package

Un extrait du résultat affiché


[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ MavenCli ---
[INFO] Building jar: C:\Users\elmou\eclipse\java-oxygen\MavenCli\target
\MavenCli-1.0-SNAPSHOT.jar
I c

[INFO]
ELH
-------------------------------------------------------------------
U
MO
[INFO] BUILD SUCCESS
[INFO]

E L
-------------------------------------------------------------------
f
hre
[INFO] Total time: 5.017 s
c
[INFO] Finished at: 2019-03-30T11:00:34+01:00
[INFO]
c A

-------------------------------------------------------------------

H & H: Research and Training 21 / 23


Maven via CLI

Pour compiler le projet et générer le .jar dans le dossier target target


mvn compile package

Un extrait du résultat affiché


[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ MavenCli ---
[INFO] Building jar: C:\Users\elmou\eclipse\java-oxygen\MavenCli\target
\MavenCli-1.0-SNAPSHOT.jar
I c

[INFO]
ELH
-------------------------------------------------------------------
U
MO
[INFO] BUILD SUCCESS
[INFO]

E L
-------------------------------------------------------------------
f
hre
[INFO] Total time: 5.017 s
c
[INFO] Finished at: 2019-03-30T11:00:34+01:00
[INFO]
c A

-------------------------------------------------------------------

Pour lancer le .jar


java -cp target/MavenCli-1.0-SNAPSHOT.jar org.eclipse.classes.App

H & H: Research and Training 21 / 23


Maven via CLI

Pour compiler le projet et générer le .jar dans le dossier target target


mvn compile package

Un extrait du résultat affiché


[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ MavenCli ---
[INFO] Building jar: C:\Users\elmou\eclipse\java-oxygen\MavenCli\target
\MavenCli-1.0-SNAPSHOT.jar
I c

[INFO]
ELH
-------------------------------------------------------------------
U
MO
[INFO] BUILD SUCCESS
[INFO]

E L
-------------------------------------------------------------------
f
hre
[INFO] Total time: 5.017 s
c
[INFO] Finished at: 2019-03-30T11:00:34+01:00
[INFO]
c A

-------------------------------------------------------------------

Pour lancer le .jar


java -cp target/MavenCli-1.0-SNAPSHOT.jar org.eclipse.classes.App

Le résultat
Hello World!

H & H: Research and Training 21 / 23


Maven via CLI

Maven

c

Pour créer un Web Project avec maven (copier la en une seule ligne)
I
mvn archetype:generate
EL H
U
-DgroupId=org.eclipse
L MO
-DartifactId=MavenWebProject

r e fE
-DarchetypeArtifactId=maven-archetype-webapp
h
c
-DinteractiveMode=false
A
c

H & H: Research and Training 22 / 23


Maven via CLI

Maven
Autres commandes Maven
mvn javadoc:javadoc pour générer la Javadoc
mvn test pour exécuter les tests unitaires
I c
EL
mvn clean pour supprimer les fichiers générés H
mvn -Dmaven.test.skip=trueO
U
supprimer les fichiers génE L M clean package pour

les tests unitaireshre


f érés reconstruire le projet sans exécuter
A c
... c

H & H: Research and Training 23 / 23


Maven via CLI

Maven
Autres commandes Maven
mvn javadoc:javadoc pour générer la Javadoc
mvn test pour exécuter les tests unitaires
I c
EL
mvn clean pour supprimer les fichiers générés H
mvn -Dmaven.test.skip=trueO
U
supprimer les fichiers génE L M clean package pour

les tests unitaireshre


f érés reconstruire le projet sans exécuter
A c
... c

Liste des options


http://maven.apache.org/ref/3.1.0/maven-embedder/cli.html

H & H: Research and Training 23 / 23

Vous aimerez peut-être aussi