0% ont trouvé ce document utile (0 vote)
3 vues19 pages

PresentationMaven 1

Maven est un outil open-source d'Apache qui automatise le cycle de construction des projets Java, en gérant les dépendances et en suivant une structure de projet standard. Il utilise un fichier pom.xml pour décrire la configuration du projet et repose sur des concepts tels que l'héritage de POM et les archetypes pour faciliter la création de nouveaux projets. Maven propose trois lifecycles principaux (default, clean, site) qui orchestrent les phases de compilation, test, et déploiement.

Transféré par

elhaouzi.mereyem.23
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)
3 vues19 pages

PresentationMaven 1

Maven est un outil open-source d'Apache qui automatise le cycle de construction des projets Java, en gérant les dépendances et en suivant une structure de projet standard. Il utilise un fichier pom.xml pour décrire la configuration du projet et repose sur des concepts tels que l'héritage de POM et les archetypes pour faciliter la création de nouveaux projets. Maven propose trois lifecycles principaux (default, clean, site) qui orchestrent les phases de compilation, test, et déploiement.

Transféré par

elhaouzi.mereyem.23
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

Outil de gestion et d'automatisation de build Java

Réalisé par: Encadré par:


• RHIATE Ayoub • Mme. BOUGROUN Zineb
• MOUSTAGHIT Souhail
• LEMRANI Moad

Atelier DevOps
Qu'est-ce que Maven ?

Automatisation
Définition Compile, teste, package et déploie
automatiquement.
Maven est un outil open-source développé par
Apache, conçu pour automatiser et standardiser le
Dépendances
cycle de construction (build) des projets Java.
Télécharge les bibliothèques nécessaires depuis
des dépôts.

Il repose sur le concept de Convention over


Configuration : en suivant une structure de projet Convention
standard, Maven sait comment compiler, tester et Structure de projet standardisée reconnue par tous
les IDE.
packager sans qu'on le lui indique explicitement.

Plugins

Extensible via des centaines de plugins disponibles.


Historique de Maven

2002 2003 2005 2010 2023

Origine Maven 1.0 Maven 2.0 Maven 3.0 Maven 4.0

Maven naît au sein Première version Réécriture Meilleures Nouveau format


du projet Jakarta officielle. Concept complète, non performances, POM (build POM vs
d'Apache comme de POM introduit. rétrocompatible. meilleure consumer POM),
sous-composant Gestion basique Lifecycles, compatibilité Maven meilleure gestion
du projet Turbine. des dépendances. conventions de 2. Validation POM multi-modules, API
structure, dépôt renforcée. Version améliorée.
central. Version encore très utilisée.
adoptée
massivement.
Maven vs Ant

Apache Ant Apache Maven

• Outil d'automatisation de tâches (build


• Outil de gestion de projet complet
scripting)

• Configuration impérative via [Link] • Configuration déclarative via [Link]

• Très flexible : on décrit COMMENT faire • Décrit QUOI faire


VS
• Pas de gestion native des dépendances • Gestion automatique des dépendances

• Pas de conventions de structure • Structure standard imposée par défaut

• Antérieur à Maven (2000) • Inclut les fonctionnalités d'Ant et bien plus


Le fichier POM (Project Object Model)
Le [Link] est le cœur de tout projet Maven. Il [Link]
décrit le projet et sa configuration de manière
<project>
déclarative. <modelVersion>4.0.0</modelVersion>
Identité (GAV) Packaging
<groupId>[Link]</groupId>
• groupId : [Link] • jar (défaut) <artifactId>mon-projet</artifactId>
<version>1.0.0</version>
• artifactId : mon-projet • war, ear, pom <packaging>jar</packaging>

• version : 1.0.0
<dependencies>
<dependency>
Dépendances Build & Plugins <groupId>junit</groupId>
<artifactId>junit</artifactId>
• <dependencies> • <build> <version>4.13</version>
• scope : compile, <scope>test</scope>
• <plugins>
test... </dependency>
</dependencies>
</project>
Héritage du POM

Concept Super POM — fourni par Maven


Tout POM hérite implicitement d'un Super POM Définit les valeurs par défaut héritées par tous les
fourni par Maven, même sans le déclarer. projets Maven :
▸ Le dépôt Maven Central comme source de
On peut aussi créer un POM Parent personnalisé dépendances
pour mutualiser la configuration entre plusieurs ▸ Le répertoire target/ comme sortie du build
modules d'un même projet. ▸ La structure standard de répertoires src/main/java...
▸ Les plugins par défaut (compiler, surefire, jar...)

Hiérarchie d'héritage et déclaration :


[Link] — déclaration d'un POM Parent
POM Parent
optionnel, défini par l'équipe <project>
<parent>
<groupId>[Link]</groupId>
<artifactId>parent-projet</artifactId>
<version>1.0.0</version>
[Link] </parent>
votre projet <!-- hérite : dépendances, plugins, propriétés -->
</project>
Coordonnées GAV : Identifier un artefact

G groupId A artifactId V version

Identifie l'organisation ou le projet Nom unique du module au sein du Version du projet.


racine. groupe. Format : [Link]
Convention : même format qu'un En minuscules, sans espace ni SNAPSHOT = version en cours de
nom de package Java inversé. caractère spécial. développement.

Exemple : Exemple : Exemple :

[Link] spring-core 5.3.29

groupId : artifactId : version → [Link] : spring-core : 5.3.29


Gestion des dépendances & Scopes

Portée par défaut. Disponible à la compilation, aux tests et à l'exécution. Incluse dans le
compile
package final.

test Uniquement pour les tests (JUnit, Mockito…). Non incluse dans le package déployé.

provided Nécessaire à la compilation mais fournie par le conteneur (ex: servlet-api dans Tomcat).

runtime Non nécessaire à la compilation, mais requise à l'exécution (ex: driver JDBC).

system Similaire à provided, mais le chemin JAR doit être fourni explicitement. Déconseillé.
Dépôts Maven: Local, Central et Distant

Dépôt Local Maven Central Dépôt Distant Privé

~/.m2/repository/ [Link] Nexus / Artifactory

Cache local sur votre machine. Dépôt public géré par Sonatype. Dépôt hébergé en entreprise.
Maven y cherche les dépendances Des centaines de milliers de Partage des artefacts internes et
en premier avant tout accès bibliotheques Java open-source proxifie Maven Central.
réseau. disponibles.
Controle total des versions
Acces hors-ligne possible Dépôt par defaut de Maven Sécurité et audit des artefacts
Évite les téléchargements répétés Accessible sans configuration

Algorithme de résolution des dépendances :

1 2 3 4
Lecture Verif. Télécharge Mise en cache
du [Link] Dépôt local Maven Central dans ~/.m2

Si la dépendance n'est pas dans le dépôt local, Maven la télécharge automatiquement depuis Maven Central et la met en cache pour les prochains builds.
Structure standard de répertoires

mon-projet/
src/main/java Code source de l'application
[Link]
src/
main/ Fichiers de config
src/main/resources
java/ ← Sources Java ([Link]…)
resources/ ← Config, XML…
webapp/ ← Web (WAR) Contenu web pour les projets
src/main/webapp
test/ WAR (JSP, WEB-INF…)
java/ ← Tests unitaires
resources/ ← Resources tests Classes de tests unitaires
src/test/java
target/ ← Générés par Maven (JUnit, TestNG…)
classes/
[Link] Resources utilisées
src/test/resources
uniquement lors des tests

Répertoire de sortie généré


target/
automatiquement par Maven
Les Archetypes
Maven
Générer des projets en quelques secondes
Archetypes Maven : Concept

Un archetype est un template de projet Maven. Il permet de générer automatiquement la structure


complète d'un nouveau projet (répertoires, [Link], classes de base) à partir d'un modèle prédéfini.

Commande de génération :

mvn archetype:generate \
-DgroupId=[Link] -DartifactId=mon-projet \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

Archetypes les plus utilisés :

maven-archetype-quickstart maven-archetype-webapp maven-archetype-j2ee-simple

Application Java simple avec classe Application Web Java (WAR) avec
Projet J2EE multi-modules de base
Main et test JUnit structure JSP/Servlet
Build
Lifecycle
Comprendre comment Maven construit votre projet
Les 3 Build Lifecycles de Maven

default clean site

Le lifecycle principal. Gère la Génère la documentation du projet


Supprime tous les fichiers et
construction complète du projet : sous forme de site HTML (Javadoc,
répertoires générés lors du build
compilation, test, packaging et rapports de tests, métriques de
précédent (le répertoire target/).
déploiement. code…).

Phases : Phases : Phases :

validate → compile → test → package pre-site → site → post-site → site-


pre-clean → clean → post-clean
→ verify → install → deploy deploy

mvn package
mvn clean mvn site
mvn install
mvn clean install mvn site-deploy
mvn deploy
Lifecycle default : Phases détaillées
Vérifie que le [Link] est correct et que toutes les informations
validate mvn validate
nécessaires sont disponibles.

compile mvn compile Compile les sources Java (.java → .class) dans target/classes.

Exécute les tests unitaires (JUnit/TestNG). Le build échoue si un test


test mvn test
échoue.

package mvn package Empaquète le projet compilé (JAR, WAR…) dans target/.

verify mvn verify Lance les tests d'intégration et vérifie la qualité du package.

install mvn install Installe le package dans votre dépôt Maven local (~/.m2/repository).

deploy mvn deploy Publie le package sur un dépôt distant (Nexus, Artifactory…).

⚠ Chaque phase exécute toutes les phases précédentes ! mvn package → validate + compile + test + package
Phases, Goals & Plugins

Lifecycle Phase Plugin Plugin Goal

Une étape dans un lifecycle (ex: Unité d'extension Maven qui fournit Une action spécifique réalisée par
compile, test, package). Lancer un ou plusieurs goals. Chaque goal un plugin (ex: compiler:compile).
une phase exécute toutes les peut être lié à une ou plusieurs Plus précis qu'une phase: exécute
phases précédentes. phases du lifecycle. uniquement ce goal.

mvn compile maven-compiler-plugin mvn compiler:compile

Plugins essentiels à connaître :


→ compile les sources Java, → exécute les tests unitaires
maven-compiler-plugin maven-surefire-plugin
configure la version JDK JUnit/TestNG

→ crée le fichier JAR final du → crée le fichier WAR pour


maven-jar-plugin maven-war-plugin
projet les applications web
Commandes essentielles

mvn archetype:generate mvn compile

Créer un nouveau projet depuis un archetype Compiler les sources uniquement

mvn test mvn package

Compiler et exécuter les tests unitaires Compiler, tester et créer le JAR/WAR

mvn install mvn clean

Package + installation dans le dépôt local Supprimer le répertoire target/

mvn clean install mvn clean install -DskipTests

Nettoyage complet puis build Build sans exécuter les tests (déconseillé)
Merci pour votre
attention!
Ce qu'il faut retenir
01 Maven automatise tout le cycle de vie d'un projet Java grâce au fichier [Link].

02 La syntaxe GAV (groupId:artifactId:version) identifie de façon unique tout artefact Maven.

03 Les scopes de dépendances contrôlent leur présence à la compilation, aux tests et à l'exécution.

04 Les archetypes permettent de bootstrapper un projet en une seule commande.

05 Les 3 lifecycles (default, clean, site) sont composés de phases séquentielles liées à des plugins.

Vous aimerez peut-être aussi