Ce guide vous explique comment utiliser Maven pour créer un projet Java simple.
Vous allez créer une application qui fournit l'heure de la journée, puis la construire avec Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
Vous devrez d’abord configurer un projet Java que Maven pourra construire. Pour rester concentré sur Maven, rendez le projet aussi simple que possible pour le moment. Créez cette structure dans un dossier de projet de votre choix.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
Dans le répertoire src/main/java/hello
, vous pouvez créer toutes les classes Java de votre choix. Pour maintenir la cohérence avec le reste de ce guide, créez ces deux classes : HelloWorld.java
et Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Maintenant que vous disposez d’un projet prêt à être construit avec Maven, l’étape suivante consiste à installer Maven.
Maven est téléchargeable sous forme de fichier zip sur https://maven.apache.org/download.cgi. Seuls les binaires sont requis, recherchez donc le lien vers apache-maven- {version} -bin.zip ou apache-maven- {version} -bin.tar.gz.
Une fois que vous avez téléchargé le fichier zip, décompressez-le sur votre ordinateur. Ajoutez ensuite le dossier bin à votre chemin.
Pour tester l'installation de Maven, exécutez mvn
depuis la ligne de commande :
mvn-v
Si tout se passe bien, des informations sur l'installation de Maven devraient vous être présentées. Il ressemblera à ce qui suit (bien que peut-être légèrement différent) :
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5 ; 2015-11-10T16:41:47+00:00) Accueil Maven : /home/dsyer/Programmes/apache-maven Version Java : 1.8.0_152, fournisseur : Azul Systems, Inc. Accueil Java : /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre Paramètres régionaux par défaut : en_GB, encodage de la plateforme : UTF-8 Nom du système d'exploitation : "linux", version : "4.15.0-36-generic", arch : "amd64", famille : "unix"
Félicitations! Vous avez maintenant Maven installé.
INFO : Vous pourriez envisager d'utiliser le wrapper Maven pour protéger vos développeurs contre l'utilisation de la bonne version de Maven, voire même l'obligation de l'installer. Les projets téléchargés depuis Spring Initializr ont le wrapper inclus. Il apparaît sous la forme d'un script mvnw
au niveau supérieur de votre projet que vous exécutez à la place de mvn
.
Maintenant que Maven est installé, vous devez créer une définition de projet Maven. Les projets Maven sont définis avec un fichier XML nommé pom.xml . Entre autres choses, ce fichier donne le nom du projet, sa version et ses dépendances vis-à-vis de bibliothèques externes.
Créez un fichier nommé pom.xml à la racine du projet (c'est à dire placez-le à côté du dossier src
) et donnez-lui le contenu suivant :
pom.xml
link:initial/pom.xml[role=include]
À l'exception de l'élément facultatif
, il s'agit du fichier pom.xml le plus simple possible, nécessaire pour créer un projet Java. Il comprend les détails suivants de la configuration du projet :
. Version du modèle POM (toujours 4.0.0).
. Groupe ou organisation auquel appartient le projet. Souvent exprimé sous la forme d'un nom de domaine inversé.
. Nom à donner à l'artefact de bibliothèque du projet (par exemple, le nom de son fichier JAR ou WAR).
. Version du projet en cours de construction.
- Comment le projet doit être emballé. La valeur par défaut est "jar" pour l'empaquetage de fichiers JAR. Utilisez "war" pour l'empaquetage des fichiers WAR.
Note | Lorsqu'il s'agit de choisir un schéma de versionnement, Spring recommande l'approche de versionnement sémantique. |
À ce stade, vous avez défini un projet Maven minimal mais performant.
Maven est maintenant prêt à construire le projet. Vous pouvez désormais exécuter plusieurs objectifs de cycle de vie de build avec Maven, notamment des objectifs pour compiler le code du projet, créer un package de bibliothèque (tel qu'un fichier JAR) et installer la bibliothèque dans le référentiel de dépendances Maven local.
Pour essayer la version, exécutez ce qui suit sur la ligne de commande :
mvn compiler
Cela exécutera Maven, lui disant d'exécuter l'objectif de compilation . Une fois terminé, vous devriez trouver les fichiers .class compilés dans le répertoire target/classes .
Puisqu'il est peu probable que vous souhaitiez distribuer ou travailler directement avec des fichiers .class , vous souhaiterez probablement exécuter le goal package à la place :
paquet mvn
L'objectif du package compilera votre code Java, exécutera tous les tests et terminera en empaquetant le code dans un fichier JAR dans le répertoire cible . Le nom du fichier JAR sera basé sur le
et
du projet. Par exemple, étant donné le fichier pom.xml minimal d'avant, le fichier JAR sera nommé gs-maven-0.1.0.jar .
Pour exécuter le fichier JAR, exécutez :
java -jar cible/gs-maven-0.1.0.jar
Note | Si vous avez modifié la valeur de de "jar" à "war", le résultat sera un fichier WAR dans le répertoire cible au lieu d'un fichier JAR. |
Maven gère également un référentiel de dépendances sur votre machine locale (généralement dans un répertoire .m2/repository de votre répertoire personnel) pour un accès rapide aux dépendances du projet. Si vous souhaitez installer le fichier JAR de votre projet dans ce référentiel local, vous devez alors appeler l'objectif install
:
installation mvn
L'objectif d'installation compilera, testera et empaquetera le code de votre projet, puis le copiera dans le référentiel de dépendances local, prêt à ce qu'un autre projet le référence en tant que dépendance.
En parlant de dépendances, il est maintenant temps de déclarer les dépendances dans la build Maven.
L’exemple simple Hello World est entièrement autonome et ne dépend d’aucune bibliothèque supplémentaire. Toutefois, la plupart des applications dépendent de bibliothèques externes pour gérer des fonctionnalités courantes et complexes.
Par exemple, supposons qu'en plus de dire « Bonjour tout le monde ! », vous souhaitiez que l'application imprime la date et l'heure actuelles. Bien que vous puissiez utiliser les fonctionnalités de date et d'heure des bibliothèques Java natives, vous pouvez rendre les choses plus intéressantes en utilisant les bibliothèques Joda Time.
Tout d’abord, modifiez HelloWorld.java pour qu’il ressemble à ceci :
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
Ici, HelloWorld
utilise la classe LocalTime
de Joda Time pour obtenir et imprimer l'heure actuelle.
Si vous deviez exécuter mvn compile
pour construire le projet maintenant, la construction échouerait car vous n'avez pas déclaré Joda Time comme dépendance de compilation dans la construction. Vous pouvez résoudre ce problème en ajoutant les lignes suivantes à pom.xml (dans l'élément
) :
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
Ce bloc de XML déclare une liste de dépendances pour le projet. Plus précisément, il déclare une seule dépendance pour la bibliothèque Joda Time. Au sein de l'élément
, les coordonnées de dépendance sont définies par trois sous-éléments :
: groupe ou organisation auquel appartient la dépendance.
- La bibliothèque requise.
- La version spécifique de la bibliothèque requise.
Par défaut, toutes les dépendances sont considérées comme des dépendances compile
. Autrement dit, ils devraient être disponibles au moment de la compilation (et si vous construisiez un fichier WAR, y compris dans le dossier /WEB-INF/libs du WAR). De plus, vous pouvez spécifier un élément
pour spécifier l'une des étendues suivantes :
provided
- Dépendances requises pour la compilation du code du projet, mais qui seront fournies au moment de l'exécution par un conteneur exécutant le code (par exemple, l'API Java Servlet).
test
- Dépendances utilisées pour compiler et exécuter des tests, mais non requises pour créer ou exécuter le code d'exécution du projet.
Maintenant, si vous exécutez mvn compile
ou mvn package
, Maven devrait résoudre la dépendance Joda Time à partir du référentiel Maven Central et la construction réussira.
Ajoutez d’abord JUnit en tant que dépendance à votre pom.xml, dans la portée du test :
link:complete/pom.xml[role=include]
Créez ensuite un scénario de test comme celui-ci :
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven utilise un plugin appelé « surefire » pour exécuter des tests unitaires. La configuration par défaut de ce plugin compile et exécute toutes les classes dans src/test/java
avec un nom correspondant à *Test
. Vous pouvez exécuter les tests sur la ligne de commande comme ceci
test mvn
ou utilisez simplement l'étape mvn install
comme nous l'avons déjà montré ci-dessus (il existe une définition de cycle de vie où "test" est inclus comme étape dans "installer").
Voici le fichier pom.xml
complété :
pom.xml
link:complete/pom.xml[role=include]
Note | Le fichier pom.xml terminé utilise le plugin Maven Shade pour la simple commodité de rendre le fichier JAR exécutable. L'objectif de ce guide est de démarrer avec Maven, sans utiliser ce plugin particulier. |
Félicitations! Vous avez créé une définition de projet Maven simple mais efficace pour créer des projets Java.
Les guides suivants peuvent également être utiles :
Construire des projets Java avec Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc