50 % de réduction sur tous les plans, durée limitée. À partir de $2.48/mo
18 min restantes
Applications web et métier

Maîtriser Maven : commandes détaillées, options et cheatsheet pour un développement efficace

Ada Lovegood By Ada Lovegood 18 min de lecture Mis à jour le 23 févr. 2025
guide des commandes mvn

Les outils d'automatisation et de développement sont sans conteste parmi les aspects les plus importants d'un projet. Dans cet article, nous allons parler de Maven. Maven est un outil d'automatisation puissant pour les projets Java. Il simplifie le processus de build et impose une structure uniforme aux projets, ce qui facilite leur gestion et leur compréhension. Cet article couvre l'essentiel de l'univers Maven : un large éventail de commandes et d'options pour optimiser votre flux de développement. Nous aborderons plusieurs aspects, notamment la gestion des serveurs et des conteneurs, la gestion du contrôle de source (SCM), et GPG pour la signature des artefacts. Nous examinerons également des commandes spécialisées pour la gestion des plugins, l'assemblage et la distribution, ainsi que la génération de sites de projet et de rapports. À la fin de ce guide, vous aurez une compréhension complète des commandes et options Maven.

Présentation de Maven : cycle de vie d'un projet

En yiddish, le mot « Maven » signifie « accumulateur de connaissances ». Cette définition résume bien la puissance de Maven en tant qu'outil d'automatisation pour les projets Java. Maven simplifie considérablement le processus de build et la gestion de projet, en automatisant diverses tâches et en fournissant un système de build unifié.

Pour bien comprendre le fonctionnement de Maven, décortiquons le concept de Modèle d'objet de projet (POM). Le POM est un fichier XML qui contient les informations et la configuration du projet. Maven s'appuie sur le POM comme base de son fonctionnement : il y lit les dépendances du projet, le répertoire de build, le répertoire source, le répertoire des sources de test et les objectifs à atteindre.

Une fois le projet et ses dépendances définis dans le pom.xml, chaque commande Maven lit le fichier pom pour exécuter la phase de build correspondante. Il existe un cycle de vie complet, depuis la création du projet jusqu'à son déploiement. Ce cycle de vie définit l'enchaînement des phases que le projet doit traverser. Chaque phase représente une étape du cycle et exécute des tâches précises : compilation du code source, exécution des tests, packaging dans un format distribuable. L'ensemble de ces éléments fait du cycle de vie Maven un concept essentiel à maîtriser. Voici un aperçu détaillé des phases du cycle de vie Maven :

  1. Validate : Cette phase vérifie que le projet est correct et que toutes les informations nécessaires sont disponibles.
  2. Compile : Cette phase compile le code source du projet.
  3. Test : Cette phase teste le code source compilé à l'aide d'un framework de tests unitaires adapté.
  4. Package : Cette phase conditionne le code compilé dans son format distribuable (par exemple, JAR, WAR).
  5. Install : Lors de la phase d'installation, le package est installé dans le dépôt local et devient disponible pour les autres projets sur la même machine.
  6. Deploy : Cette phase copie le package final vers le dépôt distant afin de le partager avec d'autres développeurs et projets.

Chacune de ces phases dispose d'une commande mvn correspondante, que nous aborderons dans les prochaines sections de notre cheatsheet Maven. Ce sont les commandes les plus importantes pour gérer le processus de build de votre projet.

Gestion des dépendances

L'une des fonctionnalités clés de Maven est la gestion des dépendances. Cette fonctionnalité joue un rôle central dans les performances de Maven, car elle simplifie la gestion des dépendances du projet.

Comment Maven gère les dépendances

Maven utilise un dépôt centralisé, appelé Référentiel Central Maven, qui héberge un large catalogue de bibliothèques et de plugins. Lorsqu'un projet nécessite une dépendance, Maven télécharge automatiquement les bibliothèques requises depuis le dépôt central et les stocke dans le dépôt local. Ce dépôt local fonctionne comme un cache sur votre machine et réduit les temps de téléchargement lors des builds ultérieurs.

Les dépendances Maven sont déclarées dans le fichier pom.xml sous la balise <dependencies> section. Chaque dépendance est définie par un ensemble de coordonnées : groupId, artifactId, et version.

Portées des dépendances

Avec Maven, vous pouvez spécifier la portée de chaque dépendance. Ce paramètre détermine la visibilité dans le classpath et la phase du cycle de vie concernée. Vous savez ainsi quelle phase a besoin de cette dépendance. Les portées courantes sont :

  • Compile : Il s'agit de la portée par défaut, utilisée lorsqu'aucune portée n'est précisée. Les dépendances avec cette portée sont disponibles dans toutes les phases de build et sont incluses dans le package final.
  • Provided : Les dépendances avec cette portée sont censées être fournies par l'environnement d'exécution. Elles sont utilisées lors de la compilation, mais ne sont pas incluses dans le package final.
  • Runtime : Ces dépendances ne sont pas nécessaires à la compilation, mais sont requises lors de l'exécution. Elles sont incluses dans le classpath d'exécution.
  • Test : Ces dépendances sont uniquement nécessaires pour compiler et exécuter les tests. Elles ne sont pas incluses dans le classpath d'exécution ni dans le package final.
  • Système : La portée system est similaire à la portée provided, mais vous devez fournir le JAR que Maven utilisera. Ce JAR doit être présent dans le chemin système.

Dépendances transitives

L'une des fonctionnalités les plus utiles de Maven est la gestion des dépendances transitives. Lorsqu'un projet déclare une dépendance, Maven inclut automatiquement non seulement cette dépendance, mais aussi ses propres dépendances, les dépendances de ces dépendances, et ainsi de suite. Cette chaîne est connue sous le nom de dépendances transitives. Pour illustrer cela : si votre projet dépend de spring-boot-starter-web, Maven inclura également toutes les bibliothèques dont spring-boot-starter-web a besoin, comme Spring Core, Spring MVC et Jackson.

Maintenant que vous connaissez le fonctionnement théorique de la gestion des dépendances dans Maven, voyons comment l'utiliser en pratique :

mvn dependency:resolve

Cette commande résout et affiche toutes les dépendances requises par votre projet. Utilisez-la pour voir quelles bibliothèques votre projet utilise et vérifier que tout est en ordre.

mvn dependency:tree

Cette commande affiche les dépendances de votre projet sous forme d'arborescence. Elle montre les relations entre chaque dépendance et aide à identifier les conflits potentiels.

mvn dependency:analyze

Cette commande analyse les dépendances de votre projet pour détecter les artefacts inutilisés. Elle vous aide à garder un projet propre et à éviter les dépendances superflues.

Les fonctionnalités de gestion des dépendances de Maven simplifient votre processus de développement. Elles vous aident aussi à éviter les erreurs classiques et à maintenir une structure de projet claire et organisée.

Exécution

L'exécution dans Maven consiste à lancer des tâches ou des goals spécifiques au sein du projet. Ces tâches peuvent aller de l'exécution de programmes Java à des scripts ou commandes externes. Maven propose des plugins puissants pour faciliter ces exécutions. C'est l'une des fonctionnalités qui fait de Maven un excellent outil pour automatiser différentes parties de votre workflow. Voici les principales commandes d'exécution Maven :

mvn exec:java

Cette commande permet d'exécuter une classe Java dans votre projet. Elle est utile pour lancer des classes principales ou tester des programmes Java autonomes sans les packager au préalable.

mvn exec:exec

Cette commande vous permet d'exécuter n'importe quel programme ou script externe depuis l'environnement Maven. Vous pouvez l'utiliser pour lancer des scripts shell, des outils externes ou d'autres programmes faisant partie de votre processus de build.

Les commandes d'exécution de Maven facilitent l'automatisation des tâches répétitives. Vous pouvez également les utiliser pour intégrer des outils et scripts externes dans le cycle de vie de votre build Maven. Dans l'ensemble, elles vous permettent de gérer vos tâches bien plus efficacement.

Gestion des serveurs et des conteneurs

La gestion des serveurs et des conteneurs est une étape importante du développement et du déploiement d'applications web. Maven simplifie ce processus grâce à des plugins qui vous permettent de démarrer, déployer et gérer des applications web sur différents serveurs et conteneurs, directement depuis votre processus de build. Voici quelques commandes Maven essentielles pour la gestion des serveurs et des conteneurs :

mvn tomcat7:run

Cette commande démarre votre application web en utilisant Apache Tomcat. C'est utile pour le développement local et les tests, car cela vous permet de déployer et tester rapidement votre application web sans configurer un environnement serveur complet.

mvn jetty:run

Cette commande exécute votre application web avec un serveur web populaire appelé Jetty. Comme Tomcat, Jetty est idéal pour le développement et les tests grâce à sa légèreté et à sa rapidité de déploiement.

Fonctionnement de la gestion des serveurs et des conteneurs

Maven utilise des plugins comme tomcat7-maven-plugin et jetty-maven-plugin pour gérer les opérations serveur. Ces plugins vous permettent de démarrer, d'arrêter et de configurer des serveurs dans le cadre de votre cycle de build. Le développement et les tests d'applications web dans un environnement cohérent deviennent ainsi beaucoup plus simples. Utiliser des profils Maven pour définir les configurations serveur selon les environnements facilite la gestion des paramètres de développement, de test et de production. Cette fonctionnalité de Maven permet également de configurer les journaux et la supervision dans vos plugins serveur, afin de suivre l'activité des serveurs et de résoudre les problèmes rapidement.

SCM (gestion du contrôle de source)

La gestion du code source (SCM) est un aspect essentiel de tout projet de développement. Les équipes ont besoin d'un SCM pour suivre les modifications apportées au code au fil du temps. Maven propose un ensemble de commandes pour interagir avec les systèmes SCM tels que Git, Subversion et d'autres. Ces commandes permettent d'automatiser diverses tâches : soumettre du code, récupérer du code ou encore mettre à jour les versions du projet. Voici quelques-unes des principales commandes SCM de Maven et leurs options :

mvn scm:checkin

Cette commande mvn permet de soumettre les modifications du projet dans le SCM. Elle automatise le processus de commit vers le dépôt de contrôle de source, afin que les dernières mises à jour soient bien sauvegardées et partagées avec l'équipe.

mvn scm:checkout

Cette commande Maven sert à récupérer le code du projet depuis le dépôt SCM. Elle est utile pour obtenir une copie locale du projet et s'assurer que vous travaillez toujours avec la dernière version du code source.

mvn scm:update

Cette commande mvn met à jour la copie de travail locale du projet avec les dernières modifications provenant du dépôt SCM. Elle garantit que votre base de code locale est synchronisée avec le dépôt et intègre toutes les nouvelles modifications apportées par les autres membres de l'équipe.

mvn scm:status

Cette commande mvn affiche l'état de la copie de travail locale par rapport au dépôt SCM. En d'autres termes, elle vous indique toutes les modifications effectuées localement mais pas encore soumises au dépôt.

mvn scm:tag

Cette commande permet de créer un tag dans le dépôt SCM. Les tags marquent des points précis dans l'historique du projet, comme des releases ou des jalons importants.

Les commandes SCM de Maven simplifient considérablement la gestion du code source de votre projet. Les maîtriser et les utiliser au quotidien améliore votre efficacité et la collaboration au sein de votre équipe de développement.

GPG (Gardien de la confidentialité GNU)

GNU Privacy Guard (GPG) est un logiciel cryptographique qui permet de chiffrer et de signer des données et des communications. Dans le contexte de Maven, GPG est utilisé pour signer les artefacts afin d'en garantir l'authenticité et l'intégrité. C'est particulièrement important lors du déploiement d'artefacts sur des dépôts publics, car cela permet aux utilisateurs de vérifier que les artefacts n'ont pas été altérés. Maven propose plusieurs commandes pour travailler avec GPG et facilite ainsi la signature et le déploiement des artefacts de votre projet. Voici quelques exemples de ces commandes :

mvn gpg:sign

Cette commande Maven permet de signer les artefacts du projet avec GPG. La signature des artefacts garantit qu'ils peuvent être vérifiés par d'autres et apporte une couche de sécurité et de confiance. Elle est souvent utilisée lors du build pour signer les JARs, les WARs et d'autres types d'artefacts avant leur déploiement.

mvn gpg:sign-and-deploy-file

Cette commande mvn regroupe la signature et le déploiement d'un fichier en une seule étape. Utilisez-la lorsque vous souhaitez signer un artefact et le déployer immédiatement dans un dépôt. Cela simplifie le processus et garantit que la signature et le déploiement s'effectuent ensemble.

Intégrer la signature GPG dans votre processus de build Maven renforce la sécurité et la fiabilité de votre logiciel. Les utilisateurs peuvent ainsi faire confiance à vos artefacts et les vérifier facilement.

Gestion des releases

La gestion des releases est un aspect fondamental du développement logiciel. Une gestion efficace des releases permet de s'assurer que les versions du logiciel sont correctement gérées, packagées et déployées. Maven propose un ensemble de commandes pour automatiser et simplifier ce processus. Voici quelques exemples d'options et de commandes Maven pour la gestion des releases :

mvn release:prepare

Cette commande mvn prépare un projet pour une release. Elle vérifie qu'il n'y a pas de modifications non soumises, met à jour les numéros de version dans les fichiers pom.xml , crée un tag dans le système de gestion du code source (SCM) et met à jour les fichiers pom.xml avec la prochaine version de développement. Elle s'assure que le projet est dans un état stable et prêt à être livré.

mvn release:perform

Cette commande exécute le processus de release proprement dit. Elle récupère le projet depuis le SCM au niveau du tag créé par la release:prepare commande, compile le projet et déploie les artefacts vers le dépôt spécifié. Cette commande garantit que les artefacts sont construits à partir de l'état exact du code au moment de la préparation de la release.

mvn release:clean

Cette commande mvn supprime tous les fichiers de sauvegarde du descripteur de release créés pendant la release:prepare processus. Elle nettoie l'environnement et s'assure qu'aucun fichier résiduel des tentatives de release précédentes ne subsiste. Cette commande vous offre un espace de travail propre et évite les problèmes potentiels lors des prochaines releases.

L'utilisation des commandes de gestion des releases simplifie les processus de livraison, améliore la qualité du logiciel et garantit une gestion efficace des releases.

Archétype

Si vous êtes développeur et souhaitez créer des structures de projet basées sur des modèles prédéfinis, le plugin Maven Archetype est fait pour vous. Nous allons ici passer en revue les principales commandes Maven liées aux archétypes.

mvn archetype:generate

Cette commande mvn permet de créer un nouveau projet à partir d'un modèle existant, ou « archetype ». Elle guide l'utilisateur dans le choix d'un archétype et la configuration du nouveau projet, pour vous aider à mettre en place une structure de projet cohérente.

mvn archetype:catalog

Cette commande liste les archétypes disponibles pour générer de nouveaux projets. Elle est utile pour explorer les différents modèles proposés par la communauté Maven et déterminer lequel correspond le mieux aux besoins de votre projet.

Ces deux commandes Maven vous permettent de démarrer rapidement un nouveau projet. Que vous lanciez une application Java simple ou un projet d'entreprise complexe, les archétypes Maven constituent un point de départ solide.

Gestion des plugins

Les plugins Maven permettent aux développeurs d'étendre les fonctionnalités de Maven et d'automatiser diverses tâches dans le cycle de vie du build. Une bonne gestion des plugins garantit que votre projet reste maintenable et que les builds sont reproductibles. Cette section couvre les commandes essentielles de gestion des plugins Maven.

mvn plugin:download

Cette commande télécharge un plugin Maven spécifique depuis le dépôt. Utilisez-la lorsque vous souhaitez vous assurer qu'un plugin particulier est disponible dans votre dépôt local avant d'exécuter d'autres commandes Maven qui en dépendent.

mvn plugin:help

Cette commande Maven affiche des informations détaillées et la documentation d'un plugin Maven spécifique. Utilisez-la lorsque vous avez besoin de comprendre les différents goals, paramètres et configurations disponibles pour un plugin.

Ces commandes de gestion des plugins Maven optimisent le processus de build, automatisent les workflows et maintiennent un niveau élevé de qualité et de cohérence dans les projets.

Assemblage et distribution

Les fonctionnalités d'assemblage et de distribution de Maven permettent aux développeurs de packager leurs projets dans différents formats. Vous pouvez les utiliser pour créer des JAR exécutables, des applications groupées ou des distributions personnalisées incluant les dépendances et d'autres ressources. Nous allons ici couvrir les principales commandes Maven pour l'assemblage et la distribution.

mvn assembly:assembly

Cette commande crée un assemblage pour le projet. Un assemblage est un package distribuable pouvant inclure des binaires, du code source, des dépendances et d'autres ressources. Cette commande utilise l'Assembly Plugin pour générer ces packages à partir du descripteur d'assemblage fourni.

mvn assembly:directory

Cette commande mvn crée la structure de répertoires de l'assemblage sans générer le fichier archive. Elle est utile pour tester et vérifier le contenu et la structure de l'assemblage avant de le packager.

Maîtriser les commandes d'assemblage et de distribution de Maven peut vous être très utile pour packager et distribuer vos applications.

Commandes de génération de site

Les commandes de site Maven constituent un excellent moyen de documenter vos projets. Elles génèrent des sites de documentation complets pour chacun d'eux. Voici les commandes de site essentielles et leurs fonctions :

mvn site

La commande mvn site génère la documentation du site du projet et inclut des informations telles que le résumé du projet, les rapports de dépendances, l'utilisation des plugins, et bien plus encore.

mvn site:deploy

Cette commande permet de déployer le site généré sur un serveur distant. Elle est utile pour rendre la documentation accessible à un public plus large, comme les membres de l'équipe ou le grand public.

mvn site:stage

Cette commande publie le site dans un répertoire local. Utilisez-la pour prévisualiser le site en local avant de le déployer sur le serveur distant.

Une documentation claire et bien organisée est essentielle au bon déroulement d'un projet. La commande mvn site vous permet de tout centraliser et de faciliter la communication au sein des équipes de développement.

Commandes WAR et JAR

En tant que développeur, vous savez à quel point la capacité à packager vos applications dans différents formats est importante dans le processus de développement. Maven vous permet de packager des applications Java dans divers formats, notamment WAR (Web Application Archive) et JAR (Java Archive). L'importance de ces formats de packaging devient évidente lorsque vous souhaitez déployer des applications sur des serveurs ou distribuer des bibliothèques. Voici les principales commandes mvn pour générer des fichiers WAR et JAR :

mvn war:war

Cette commande compile votre projet et le package dans un fichier WAR. Lors de son exécution, Maven génère un fichier WAR dans le répertoire target de votre projet.

mvn jar:jar

Cette commande compile votre projet et le package dans un fichier JAR dans le répertoire target de votre projet.

Ces deux commandes facilitent le déploiement et la distribution. Vous pouvez les utiliser pour gérer et distribuer efficacement vos applications Java.

Rapports

Tout projet logiciel nécessite des rapports détaillés pour suivre sa progression. Maven propose des plugins puissants et des commandes mvn pour générer différents types de rapports. Cette section présente deux plugins Maven utilisables pour le reporting : Surefire et JaCoCo.

Plugin Surefire

Ce plugin permet d'exécuter des tests unitaires dans un projet Maven. Il génère des rapports détaillés sur les tests exécutés, ce qui vous permet de vérifier que le code se comporte comme prévu.

mvn surefire-report:report

Cette commande génère un rapport de tests unitaires dans un format facile à lire et à analyser. Maven crée un rapport HTML dans le répertoire target/site de votre projet. Ce rapport indique le nombre de tests exécutés, réussis et échoués, ainsi que les traces de pile détaillées pour chaque échec.

Plugin JaCoCo

Ce plugin permet de mesurer et de rapporter la couverture du code par les tests unitaires. Vous pouvez ainsi vous assurer que vos tests couvrent bien l'ensemble du code.

mvn jacoco:report

Si vous souhaitez savoir quelles parties du code ont été testées et lesquelles ne l'ont pas été, cette commande génère un rapport de couverture de code. Le rapport est au format HTML et se trouve dans le répertoire target/site/jacoco Il affiche les métriques de couverture détaillées pour les classes, les méthodes et les lignes de code.

Ces deux plugins vous permettent de suivre les résultats des tests et la couverture du code, et vous donnent une vision claire de la santé et de la qualité de votre base de code.

Personnalisation du build

Maven vous permet d'adapter le processus de build aux besoins spécifiques de votre projet. Dans cette section, nous verrons comment utiliser les profils Maven et les définitions de propriétés pour personnaliser le build.

Profils Maven

Les profils Maven vous permettent de définir différentes configurations pour votre projet, activables selon des critères tels que les propriétés système, les variables d'environnement ou des conditions personnalisées. Vous pouvez ainsi adapter le processus de build à différents environnements : développement, test et production. Définissez vos profils dans la section pom.xml sous la balise <profiles> de votre fichier. L'option -p suivie de l'identifiant du profil active le profil correspondant.

Définitions des propriétés

Les propriétés Maven vous permettent de définir des valeurs réutilisables dans l'ensemble de votre fichier pom.xml . Ces propriétés peuvent être spécifiées dans la section pom.xml, via la ligne de commande, ou dans des fichiers de propriétés externes. Définissez vos propriétés dans la section <properties> de votre fichier pom.xml. Une fois définies, vous pouvez les utiliser partout dans le fichier pom.xml .

Personnaliser le processus de build dans Maven vous permet d'adapter votre projet à différents environnements et besoins. Les profils vous permettent de basculer entre différentes configurations, tandis que les propriétés facilitent la gestion et la réutilisation des valeurs.

Conclusion

Ce guide propose une introduction complète à Maven en vous accompagnant à chaque étape du développement d'une application Java. En tant qu'outil d'automatisation pour les projets Java, Maven offre des commandes et des fonctionnalités adaptées à chaque phase du développement. Maîtriser ces commandes améliore concrètement la qualité de votre processus de développement.

Questions fréquemment posées

À quoi sert Maven ?

Maven est un outil d'automatisation du build et de gestion de projet pour les projets Java. Il simplifie le processus de build, gère les dépendances du projet et fournit une structure de projet standardisée. Maven prend également en charge la documentation, le reporting et la distribution des projets.

Qu'est-ce que le POM dans Maven ?

Maven est un outil qui automatise la compilation et la gestion des dépendances pour les projets Java. Le POM (Project Object Model) est un fichier XML utilisé par Maven pour décrire le projet et sa configuration de build. Il définit les dépendances, les plugins, les objectifs et les autres paramètres de compilation.

Partager

À lire sur le blog

Continuez la lecture.

Image de présentation de l'avis Odoo avec un grand titre à gauche et le logo Odoo à droite, entouré de panneaux d'interface flottants sur un fond nuage violet doux.
Applications web et métier

Avis complet sur Odoo : est-ce le bon ERP pour votre entreprise ?

Odoo est l'une des plateformes ERP les plus considérées par les entreprises en croissance, pour une raison simple : elle promet de tout centraliser. Ventes, comptabilité, inventaire

Jim SchwarzJim Schwarz 11 min de lecture
Image de présentation des alternatives open-source à WordPress avec un arrière-plan en dégradé coloré, un écran de bureau, un éditeur de code, un aperçu de tableau de bord flouté et un grand titre à gauche.
Applications web et métier

Les meilleures alternatives open-source à WordPress pour les développeurs

WordPress reste pertinent et convient parfaitement à une grande variété de sites. Son répertoire de plugins compte plus de 62 000 extensions, et celui des thèmes propose plus de 14 000 thèmes gratuits. C

Jim SchwarzJim Schwarz 14 min de lecture
Image de présentation de Automad vs. WordPress avec les logos des deux plateformes et un titre demandant quel CMS les développeurs devraient choisir.
Applications web et métier

Automad vs. WordPress : comparaison approfondie entre deux des meilleurs CMS

Automad et WordPress répondent au même besoin de deux façons très différentes. Automad est un CMS à fichiers plats et un moteur de templates : le contenu est stocké dans des fichiers plutôt que dans une base de données, tandis que WordPress,

Jim SchwarzJim Schwarz 9 min de lecture

Prêt à déployer ? À partir de 2,48 $/mois.

Cloud indépendant, depuis 2008. AMD EPYC, NVMe, 40 Gbps. Remboursement sous 14 jours.