Les outils d'automatisation et de développement font certainement partie des aspects les plus importants d'un projet, et dans ce blog, nous souhaitons discuter de Maven. Maven est un puissant outil d'automatisation pour les projets Java. Cela simplifie le processus de construction et crée une structure uniforme pour les projets. Ainsi, cela facilite la gestion et la compréhension des projets. Ce blog couvre presque tout le monde de Maven, couvrant un large éventail de commandes et d'options qui rationaliseront votre flux de travail de développement. Nous explorerons divers aspects tels que la gestion des serveurs et des conteneurs, la gestion du contrôle de source (SCM) et GPG pour la signature des artefacts. De plus, nous examinerons les commandes spécialisées pour la gestion, l’assemblage et la distribution des plugins, ainsi que pour la génération de sites de projet et de rapports. Ainsi, à la fin de ce guide, vous aurez une compréhension approfondie de Commandes et options Maven.
- Présentation de Maven ; Cycle de vie du projet
- Gestion des dépendances
- Exécution
- Gestion des serveurs et des conteneurs
- SCM (gestion du contrôle de source)
- GPG (GNU Privacy Guard)
- Gestion des versions
- Archétype
- Gestion des plugins
- Assemblage et distribution
- Commandes de génération de site
- Commandes WAR et JAR
- Rapports
- Construire la personnalisation
- Conclusion
- FAQ
Présentation de Maven ; Cycle de vie du projet
En langue yiddish, le mot Maven signifie « accumulateur de connaissances ». Cette signification explique en grande partie la puissance de Maven en tant qu'outil d'automatisation pour les projets Java. Maven rend le processus de construction et la gestion de projet très simples. Et il le fait en automatisant diverses tâches et en fournissant un système de construction uniforme.
Maintenant, pour avoir une idée claire du fonctionnement de Maven, décomposons le concept de Modèle d'objet de projet (POM). POM est un fichier XML qui contient des informations sur le projet et les détails de configuration. Maven utilise POM comme base de son travail. Ainsi, Maven utilise les dépendances du projet, le répertoire de construction, le répertoire source, le répertoire source de test et les objectifs de cette source pour fonctionner.
Après avoir défini le projet et ses dépendances à partir de pom.xml, chaque fois que vous exécutez une commande Maven, elle lit le fichier pom pour exécuter la phase de construction spécifique de cette commande. Il y a un long cycle de vie d'un projet depuis le moment où vous créez le projet jusqu'à ce que vous le déployiez réellement. Ce cycle de vie définit la séquence de phases que votre projet doit traverser. Chaque phase représente une étape du cycle de vie et exécute des tâches spécifiques, telles que la compilation du code source, l'exécution de tests et le conditionnement du code dans un format distribuable. Tous ces éléments font du cycle de vie du projet Maven un concept important à comprendre. Examinons donc de plus près les phases du cycle de vie de Maven :
- Valider: Cette phase valide que le projet est correct et que toutes les informations nécessaires sont disponibles.
- Compiler: Dans cette phase, le code source du projet est compilé.
- Test: Cette phase teste le code source compilé à l'aide d'un cadre de tests unitaires approprié.
- Emballer: Cette phase conditionne le code compilé dans son format distribuable (par exemple, JAR, WAR).
- Installer: Lors de la phase d'installation, le package est installé dans le référentiel local et devient disponible pour d'autres projets sur la même machine.
- Déployer: Cette phase copie le package final dans le référentiel distant pour le partager avec d'autres développeurs et projets.
Chacune de ces phases a une commande mvn correspondante que nous aborderons dans les prochaines sections de notre aide-mémoire Maven. Ce seront les commandes les plus importantes à utiliser pour gérer le processus de construction de votre projet.
Gestion des dépendances
L'une des fonctionnalités principales de Maven est la gestion des dépendances. Cette fonctionnalité est très importante dans les performances de Maven car elle facilite la gestion des dépendances du projet.
Comment Maven gère les dépendances
Maven utilise un référentiel centralisé, connu sous le nom de Dépôt central Maven, où est hébergée une vaste gamme 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 référentiel central et les stocke dans le référentiel local. Ce référentiel local est un cache sur votre ordinateur local qui réduit les temps de téléchargement des futures versions.
Les dépendances dans Maven sont spécifiées dans le pom.xml dossier sous le <dépendances> section. Chaque dépendance est définie par un ensemble de coordonnées : ID groupe, IDartefact, et version.
Portées des dépendances
Lorsque vous travaillez avec Maven, vous pouvez spécifier la portée des dépendances. Ce facteur définit la visibilité du chemin de classe et la phase du cycle de vie de la dépendance. Ainsi, vous pouvez savoir quelle phase nécessite cette dépendance. Les portées courantes sont :
- Compiler: Il s'agit de la portée par défaut et est utilisée lorsqu'aucune portée n'est spécifiée. Les dépendances avec cette portée sont disponibles dans toutes les phases de construction et sont incluses dans le package final.
- Fourni: Nous nous attendons à ce que les dépendances avec cette portée soient prêtes par l'environnement d'exécution. Ils sont utilisés lors de la compilation mais ne sont pas inclus dans le package final.
- Durée d'exécution : Ces dépendances ne sont pas nécessaires à la compilation mais sont requises lors de l'exécution. Ils sont inclus dans le chemin d’accès aux classes d’exécution.
- Test: Ces dépendances sont nécessaires uniquement pour compiler et exécuter des tests. Ils ne sont pas inclus dans le runtime ou le package final.
- Système: La portée du système est similaire à la portée fournie, mais vous devez fournir le JAR que Maven utilisera. Le JAR doit être présent dans le chemin système.
Dépendances transitives
L’une des fonctionnalités puissantes de Maven est qu’il peut gérer les dépendances transitives. Lorsqu'un projet déclare une dépendance, Maven inclut automatiquement non seulement cette dépendance mais aussi ses dépendances, les dépendances de leurs dépendances, etc. Cette chaîne de dépendances est appelée dépendances transitives. Pour que les choses soient claires, imaginez que votre projet dépend de spring-boot-starter-web, Maven inclura désormais également toutes les bibliothèques dont dépend spring-boot-starter-web, telles que Spring Core, Spring MVC et Jackson.
Maintenant que vous connaissez la théorie sur la manière dont Maven gère les dépendances, voyons comment l'utiliser en pratique :
mvn dependency:resolve
Cette commande peut résoudre et afficher toutes les dépendances requises pour votre projet. Vous pouvez l'utiliser pour voir de quelles bibliothèques dépend votre projet et vous assurer que tout est en ordre.
mvn dependency:tree
Avec cette commande, vous pouvez avoir une arborescence des dépendances de votre projet. Il montre comment chaque dépendance est liée et aide à identifier les conflits potentiels.
mvn dependency:analyze
Cette commande analyse les dépendances de votre projet pour trouver les artefacts inutilisés. Cela vous aide à nettoyer votre projet et à éviter les ballonnements inutiles.
Les fonctionnalités de gestion des dépendances de Maven facilitent votre processus de développement. Ils vous aident également à éviter les pièges courants et à maintenir une structure de projet propre et organisée.
Exécution
L'exécution dans Maven implique l'exécution de tâches ou d'objectifs spécifiques au sein du projet. Ces tâches peuvent aller de l'exécution de programmes Java à l'exécution de scripts ou de commandes externes. Maven fournit des plugins puissants pour faciliter ces exécutions. Il s'agit d'une autre fonctionnalité de Maven qui en fait un excellent outil pour automatiser différentes parties du flux de travail de votre projet. Passons donc en revue les principales commandes d’exécution de Maven :
mvn exec:java
Cette commande est utilisée pour exécuter une classe Java dans votre projet. C’est utile pour exécuter des classes principales ou tester des programmes Java autonomes sans les empaqueter au préalable.
mvn exec:exec
Cette commande vous permet d'exécuter n'importe quel programme ou script externe à partir de l'environnement Maven. Vous pouvez l'utiliser pour exécuter des scripts shell, des outils externes ou d'autres programmes faisant partie de votre processus de construction.
Les commandes d'exécution de Maven vous aident à automatiser les tâches répétitives. Vous pouvez également les utiliser pour intégrer des outils et des scripts externes dans votre cycle de vie de build Maven. Ainsi, dans l’ensemble, ils peuvent vous aider à gérer vos tâches beaucoup plus efficacement.
Gestion des serveurs et des conteneurs
La gestion des serveurs et des conteneurs est une étape importante dans le développement et le déploiement d'applications web. Maven facilite ce processus avec de puissants plugins qui vous permettent d'exécuter, de déployer et de gérer des applications Web sur divers serveurs et conteneurs directement à partir de votre processus de build. Voici quelques commandes Maven essentielles pour gérer les serveurs et les conteneurs :
mvn tomcat7:run
Cette commande exécute votre application Web en utilisant Apache Tomcat. Il est utile pour le développement et les tests locaux et vous permet de déployer et de tester rapidement votre application Web sans configurer un environnement de serveur complet.
mvn jetty:run
Cette commande exécute votre application Web à l'aide d'un serveur Web populaire appelé Jetée. Comme Tomcat, Jetty est idéal pour le développement et les tests en raison de ses capacités de déploiement légères et rapides.
Comment fonctionne la gestion des serveurs et des conteneurs
Maven utilise des plugins comme tomcat7-maven-plugin et plugin-jetty-maven pour gérer les opérations du serveur. Ces plugins vous permettent de démarrer, d'arrêter et de configurer des serveurs dans le cadre du cycle de vie de votre build. Ainsi, développer et tester des applications Web dans un environnement cohérent devient beaucoup plus facile. L'utilisation de profils Maven pour définir des configurations de serveur pour différents environnements vous aide à gérer différents paramètres de développement, de test et de production. Cette fonctionnalité de Maven vous permet également de configurer la journalisation et la surveillance au sein des plugins de votre serveur. Ainsi, vous pouvez suivre les activités du serveur et résoudre rapidement les problèmes.
SCM (gestion du contrôle de source)
Un aspect important de tout projet de développement est la gestion du contrôle des sources (SCM). Les équipes de développement ont besoin de SCM pour gérer les modifications apportées au code source au fil du temps. Maven dispose d'un ensemble de commandes pour interagir avec les systèmes SCM tels que Git, Subversion et autres. Ces commandes peuvent automatiser diverses tâches, telles que l'archivage du code, l'extraction du code et la mise à jour des versions du projet. Voici quelques-unes des commandes clés de Maven SCM et leurs options :
mvn scm:checkin
Vous pouvez utiliser cette commande mvn pour archiver les modifications du projet dans le SCM. Cette commande permet d'automatiser le processus de validation des modifications dans le référentiel de contrôle de code source. Ainsi, les dernières mises à jour sont définitivement enregistrées et partagées avec l'équipe.
mvn scm:checkout
Cette commande maven est utilisée pour extraire le code du projet à partir du référentiel SCM et est utile pour obtenir une copie locale du projet. Ainsi, vous êtes toujours sûr de travailler 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 du référentiel SCM. Le travail de cette commande consiste à s'assurer que votre base de code locale est synchronisée avec le référentiel et inclut 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 référentiel SCM. En d’autres termes, il vous informe de toutes les modifications qui ont été apportées localement mais pas encore validées dans le référentiel.
mvn scm:tag
Cette commande permet de créer une balise dans le référentiel SCM. Les balises marquent des points spécifiques dans l’historique du projet, tels que des versions ou des étapes importantes.
Les commandes Maven SCM peuvent considérablement rationaliser le processus de gestion du code source de votre projet. Comprendre et utiliser ces commandes améliorera votre efficacité et votre collaboration au sein de votre équipe de développement.
GPG (GNU Privacy Guard)
GNU Privacy Guard (GPG) est un logiciel cryptographique qui permet aux utilisateurs de crypter et de signer des données et des communications. Dans le contexte de Maven, GPG est utilisé pour signer des artefacts afin de garantir leur authenticité et leur intégrité. Ceci est important lorsque vous déployez des artefacts dans des référentiels publics, car cela permet aux utilisateurs de vérifier que les artefacts n'ont pas été falsifiés. Maven fournit plusieurs commandes pour travailler avec GPG et facilite le processus de signature et de déploiement des artefacts de votre projet. Voyons quelques-unes de ces commandes à titre d'exemple :
mvn gpg:sign
Vous pouvez utiliser cette commande maven pour signer les artefacts du projet avec GPG. La signature des artefacts garantit qu'ils peuvent être vérifiés par d'autres et fournit une couche de sécurité et de confiance. Cette commande est souvent utilisée pendant le processus de génération pour signer les fichiers JAR, WAR et autres types d'artefacts avant le déploiement.
mvn gpg:sign-and-deploy-file
Cette commande mvn combine la signature et le déploiement d'un fichier en une seule étape. Vous pouvez l'utiliser lorsque vous souhaitez signer un artefact et le déployer immédiatement dans un référentiel. Cela rationalise votre processus et garantit que vous souhaitez signer un artefact et le déployer immédiatement dans un référentiel.
L'intégration de la signature GPG dans votre processus de build Maven peut améliorer la sécurité et la fiabilité de votre logiciel. Ainsi, il devient plus facile pour les utilisateurs de faire confiance et de vérifier vos artefacts.
Gestion des versions
La gestion des versions est très importante dans le développement de logiciels. Grâce à une gestion efficace des versions, vous pouvez vous assurer que les versions logicielles sont correctement gérées, packagées et déployées. Maven fournit un ensemble de commandes pour automatiser et rationaliser le processus de publication. Examinons quelques exemples d'options et de commandes Maven pour la gestion des versions :
mvn release:prepare
Cette commande mvn est utilisée pour préparer un projet pour une version. Il effectue des tâches telles que vérifier qu'il n'y a pas de modifications non validées, mettre à jour les numéros de version dans le pom.xml fichiers, en marquant la version dans le système de gestion du contrôle de source (SCM) et en mettant à jour le pom.xml fichiers vers la prochaine version de développement. Il garantit que le projet est dans un état stable et prêt à être publié.
mvn release:perform
Cette commande exécute le processus de publication réel. Il extrait le projet du SCM au niveau de la balise créée par le version:préparer commande, construit le projet et déploie les artefacts dans le référentiel 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 version.
mvn release:clean
Cette commande mvn supprime tous les fichiers de sauvegarde du descripteur de version créés lors de la version:préparer processus. Il nettoie l'environnement et s'assure qu'il ne reste aucun fichier restant des tentatives de publication précédentes. Cette commande vous offre un espace de travail propre et évite les problèmes potentiels dans les prochaines versions.
L'utilisation des commandes de gestion des versions rationalise les processus de publication, améliore la qualité des logiciels et garantit que les versions sont gérées efficacement.
Archétype
Si vous êtes un développeur souhaitant créer des structures de projet basées sur des modèles prédéfinis, vous devriez envisager d'utiliser le plugin Maven Archetype. Ici, nous discuterons des principales commandes Maven associées aux archétypes.
mvn archetype:generate
Vous pouvez utiliser cette commande mvn pour créer un nouveau projet à partir d'un modèle existant, ou « archétype ». Cette commande guide l'utilisateur dans la sélection d'un archétype et la configuration du nouveau projet. Cela vous aide donc à monter un projet bien structuré.
mvn archetype:catalog
Cette commande répertorie les archétypes disponibles qui peuvent être utilisés pour générer de nouveaux projets. C'est utile pour explorer les différents modèles fournis par la communauté Maven et déterminer quel archétype correspond le mieux aux besoins de votre projet.
En utilisant ces deux commandes maven, vous pouvez démarrer rapidement un nouveau projet. Que vous démarriez une simple application Java ou un projet d'entreprise complexe, les archétypes Maven constituent un point de départ précieux.
Gestion des plugins
Les plugins Maven permettent aux développeurs d'étendre les fonctionnalités de Maven et d'automatiser diverses tâches au cours du cycle de vie de la construction. La gestion efficace des plugins garantit que votre projet reste maintenable et que les builds sont reproductibles. Cette section couvrira les commandes essentielles de gestion des plugins Maven.
mvn plugin:download
Cette commande est utilisée pour télécharger un plugin Maven spécifique depuis le référentiel. Vous pouvez l'utiliser lorsque vous souhaitez vous assurer qu'un plugin spécifique est disponible dans votre référentiel 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 une documentation sur un plugin Maven spécifique. Vous pouvez l'utiliser lorsque vous avez besoin de comprendre les différents objectifs, paramètres et configurations disponibles pour un plugin.
Ces commandes de gestion de plugin Maven améliorent le processus de construction, automatisent les flux de travail et maintiennent des normes élevées de qualité et de cohérence des projets.
Assemblage et distribution
La fonctionnalité d'assemblage et de distribution de Maven permet aux développeurs de regrouper leurs projets dans différents formats pour la distribution. Vous pouvez les utiliser pour créer des fichiers JAR exécutables, des applications groupées ou des distributions personnalisées incluant des dépendances et d'autres ressources. Ici, nous couvrirons les commandes Maven clés pour l’assemblage et la distribution.
mvn assembly:assembly
Cette commande crée un assembly pour le projet. Un assembly est un package distribuable qui peut inclure des binaires, du code source, des dépendances et d’autres ressources. Cette commande utilise le plugin Assembly pour générer ces packages en fonction du descripteur d'assembly fourni.
mvn assembly:directory
Cette commande mvn crée la structure de répertoires de l'assembly sans créer réellement le fichier d'archive. Cette commande est utile pour tester et vérifier le contenu et la structure de l’assembly avant de l’empaqueter.
Apprendre à utiliser les commandes d’assemblage et de distribution de Maven peut vous aider beaucoup à empaqueter et à distribuer vos applications.
Commandes de génération de site
Les commandes de site de Maven sont un excellent moyen de documenter des projets. Ces commandes créent des sites Web de documentation complets pour vos projets. Ici, nous couvrirons les commandes essentielles du site et leurs fonctions :
mvn site
La commande mvn site génère la documentation du site du projet et inclut des informations sur le projet, telles que le résumé du projet, les rapports de dépendances, l'utilisation du plugin, etc.
mvn site:deploy
Vous pouvez utiliser cette commande pour déployer le site généré sur un serveur distant. Ceci est utile pour mettre la documentation à la disposition d'un public plus large, tel que les membres de l'équipe ou le public.
mvn site:stage
Cette commande place le site dans un répertoire local. Vous pouvez utiliser cette commande pour prévisualiser le site localement avant de le déployer sur le serveur distant.
Une documentation soignée et organisée est si importante dans le développement d’un projet. La commande maven site permet d'avoir tout en place et d'avoir une meilleure communication au sein des équipes de développement.
Commandes WAR et JAR
En tant que développeur, vous savez certainement que pouvoir regrouper vos applications dans différents formats est très important dans le processus de développement. Maven vous permet de regrouper des applications Java dans différents formats, notamment des fichiers 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 et distribuer des bibliothèques. Ici, nous couvrons les commandes mvn clés pour générer des fichiers WAR et JAR :
mvn war:war
Cette commande compile votre projet et le conditionne dans un fichier WAR. Lorsque vous exécutez cette commande, Maven générera un fichier WAR dans le répertoire cible de votre projet.
mvn jar:jar
Cette commande compile votre projet et le conditionne dans un fichier JAR dans le répertoire cible de votre projet.
Ces deux commandes vous aident dans le déploiement et la distribution. Vous pouvez donc les utiliser pour gérer et distribuer efficacement vos applications Java.
Rapports
Tout projet logiciel nécessite des rapports détaillés pour suivre les progrès. Et Maven dispose de puissants plugins et de commandes mvn pour générer différents types de rapports. Cette section couvre deux plugins Maven que vous pouvez utiliser pour la création de rapports : Surefire et JaCoCo.
Plugin infaillible
Vous pouvez utiliser ce plugin pour exécuter des tests unitaires dans un projet Maven. Il génère des rapports détaillés sur les tests exécutés afin que vous puissiez être sûr que le code se comporte comme vous l'attendez.
mvn surefire-report:report
Cette commande génère un rapport de test unitaire dans un format facile à lire et à analyser. Avec cette commande, Maven crée un rapport HTML dans le cible/site répertoire de votre projet. Ce rapport comprend des informations sur le nombre de tests exécutés, réussis et échoués, ainsi que des traces détaillées de pile pour tout échec.
Plugin JaCoCo
Vous pouvez utiliser ce plugin pour mesurer et signaler la couverture du code par des tests unitaires. Ainsi, vous pouvez vous assurer que vos tests couvrent la base de code.
mvn jacoco:report
Si vous souhaitez voir quelles parties du code ont été testées et lesquelles ne l'ont pas été, cette commande vous donne un rapport de couverture du code. Le rapport créé par cette commande est un rapport HTML dans le cible/site/jacoco répertoire qui affiche des métriques de couverture détaillées pour les classes, les méthodes et les lignes de code.
Ces deux plugins vous aident à suivre les résultats des tests et la couverture du code et vous donnent des informations utiles sur la santé et la qualité de votre base de code.
Construire la personnalisation
Maven vous permet d'adapter la construction pour répondre aux exigences spécifiques de votre projet. Dans cette section, nous expliquerons comment utiliser les profils Maven et les définitions de propriétés pour la personnalisation de la build.
Profils Maven
Avec les profils Maven, vous pouvez définir différentes configurations pour votre projet, qui peuvent être activées en fonction de différents facteurs tels que les propriétés du système, les variables d'environnement ou les conditions personnalisées. Cela signifie que vous pouvez personnaliser le processus de génération pour différents environnements, tels que le développement, les tests et la production. Vous pouvez définir des profils dans votre pom.xml dossier sous le <profils> section. Et le -p L'option suivie de l'ID du profil activera le profil pour vous.
Définitions de propriétés
Les propriétés Maven vous permettent de définir des valeurs qui peuvent être réutilisées tout au long de votre pom.xml déposer. Ces propriétés peuvent être spécifiées dans le pom.xml, via la ligne de commande ou dans des fichiers de propriétés externes. Vous pouvez définir des propriétés dans le <propriétés> section de votre pom.xml. Après les avoir définies, vous pouvez utiliser ces propriétés dans tout le pom.xml déposer.
La personnalisation du processus de construction dans Maven peut vous aider à adapter votre projet à différents environnements et exigences. En utilisant des profils, vous pouvez basculer entre différentes configurations de construction et en utilisant des propriétés, vous pouvez réutiliser et gérer efficacement les valeurs.
Conclusion
Ce blog a fourni une introduction complète à Maven tout en vous guidant à travers chaque étape du processus de développement d'une application Java. En tant que puissant outil d'automatisation pour les projets Java, maven dispose de commandes et de capacités différentes pour chaque phase du développement, et savoir comment travailler avec ces commandes et les maîtriser améliore la qualité de votre processus de développement.
FAQ
A quoi sert Maven ?
Maven est un outil d'automatisation de build et de gestion de projet pour les projets Java. Il simplifie le processus de construction, 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 du projet.
Qu’est-ce que POM dans Maven ?
Maven est un outil qui automatise le processus de construction et la gestion des dépendances pour les projets Java. POM (Project Object Model) est un fichier XML dans Maven qui contient des informations sur le projet et les détails de configuration utilisés par Maven pour créer le projet. Le fichier POM définit les dépendances du projet, les plugins, les objectifs et autres configurations de build.