Importer un projet Maven dans Eclipse en 5 minutes

Thierry Leriche-Dessirier

Ce mini article montre (par l'exemple) comment compiler une application Java-Maven et l'importer dans Eclipse en quelques minutes. Commentez ♪

- Titre : Importer un projet Maven dans Eclipse en 5 minutes

- Auteur : Thierry Leriche-Dessirier

- Parution : 21 décembre 2011

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2011 Thierry Leriche-Dessirier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. À propos

- I-B. Avant de commencer

- I-C. Mise à jour

- II. Action

- II-A. Télécharger le projet d'exemple

- II-B. Installer le projet avec Maven

- II-C. Préparation de l'import dans Eclipse

- II-D. Import dans Eclipse

- III. Conclusions

- IV. Remerciements

- V. Annexes

- V-A. Configuration Maven

- V-B. Compile Vs Install

- V-C. Lien

I - Introduction

Dans ce document, nous allons voir comment compiler une application Java, créée à l'aide de Maven, puis, comment l'importer dans Eclipse.

J'ai fait une vidéo avec toutes ces étapes. Rendez-vous dans le chapitre « conclusion » pour la regarder.

I-A - À propos

Découvrir une technologie n'est pas chose facile. En aborder plusieurs d'un coup l'est encore moins. Partant de ce constat, cet article a été écrit pour aller à l'essentiel. Les points importants sont présentés dans le corps de l'article et les éléments secondaires sont expliqués en annexe.

I-B - Avant de commencer

Pour suivre ce tutoriel, il est nécessaire d'avoir installé les éléments suivants :

- Java JDK 5 (ou plus) ;

- Eclipse 3 (ou plus) ;

- Maven 2/3.

Pour écrire ce tutoriel, j'ai utilisé les versions suivantes :

- Java JDK 1.6.0_24-b07 ;

- Eclipse Indigo 3.7 JEE 64b ;

- Maven 3.0.3.

I-C - Mise à jour

19 janvier 2012 : ajout d'une proposition de configuration du fichier « mvn.bat » en annexe.

16 novembre 2013 : j'ai mis la vidéo de toutes ces étapes sur YouTube et dans les conclusions.

II - Action

II-A - Télécharger le projet d'exemple

Durée estimée : 1 minute.

Pour commencer, je vous propose de télécharger le fichier Zip « calculette.zip », contenant un projet Java-Maven d'exemple, puis de le dézipper vers le dossier « C:\dvp\calculette\ ».

Le dossier « C:\dvp\calculette\ » doit alors contenir les éléments suivants :

- Dossier « src » ;

- Fichier « pom.xml » ;

- Fichiers « license.txt » et « README.txt » (ces deux derniers fichiers ne sont pas importants dans ce tutoriel).

II-B - Installer le projet avec Maven

Durée estimée : 1 minute.

Nous allons ouvrir un terminal (commande « cmd » sous Windows) et nous placer dans le dossier « C:\dvp\calculette\ »

Se placer dans le bon dossier

c:
cd \
cd dvp
cd calculette

Puis nous allons installer (compiler) le projet à l'aide de Maven.

Commande de compilation du projet

mvn compile

Maven va télécharger un certain nombre de bibliothèques. Il faut donc une connexion Internet.

Maven se sert du fichier « pom.xml » pour savoir quoi faire. Dans l'exemple, le fichier indique qu'il faut avoir les dépendances vers les frameworks JUnit et Guava.

Extrait du fichier pom.xml

<dependencies>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>4.8.2</version>
</dependency>

<!-- Guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>10.0</version>
</dependency>
</dependencies>

En fonction des éléments déjà présents sur le disque dur, le résultat de la compilation devrait ressembler à la sortie suivante.

Commande d'installation du projet

C:\dvp\calculette>mvn compile

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Calculette 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ calculette ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ calculette ---
[INFO] Compiling 5 source files to C:\dvp\calculette\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.205s
[INFO] Finished at: Thu Dec 15 07:15:54 CET 2011
[INFO] Final Memory: 6M/59M
[INFO] ------------------------------------------------------------------------
C:\dvp\calculette>

Durant ce traitement, Maven crée automatiquement le dossier « target » qui contient le programme compilé.

II-C - Préparation de l'import dans Eclipse

Durée estimée : 30 secondes.

Il faut maintenant créer les fichiers spécifiques à Eclipse, toujours à l'aide de Maven.

Génération des fichiers de configuration d'Eclipse

mvn eclipse:eclipse

En fonction des éléments déjà présents sur le disque dur, le résultat Maven devrait ressembler à la sortie suivante.

Génération des fichiers de configuration d'Eclipse

C:\dvp\calculette>mvn eclipse:eclipse

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Calculette 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO]  maven-eclipse-plugin:2.8:eclipse (default-cli) @ calculette
[INFO]
[INFO]  maven-eclipse-plugin:2.8:eclipse (default-cli) @ calculette
[INFO]
[INFO] --- maven-eclipse-plugin:2.8:eclipse (default-cli) @ calculette ---
[INFO] Using Eclipse Workspace: null
[INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER
[INFO] Not writing settings - defaults suffice
[INFO] Wrote Eclipse project for "calculette" to C:\dvp\calculette.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.916s
[INFO] Finished at: Wed Dec 14 07:16:22 CET 2011
[INFO] Final Memory: 7M/108M
[INFO] ------------------------------------------------------------------------
C:\dvp\calculette>

Durant ce traitement, Maven crée les fichiers « .classpath » et « .projet » dont Eclipse a besoin.

II-D - Import dans Eclipse

Durée estimée : 3 minutes.

On peut donc maintenant lancer Eclipse. Dans la suite, nous allons supposer que c'est la première fois qu'on importe un projet Maven dans Eclipse.

Pour commencer, il faut aller vers le Workbench (espace de travail) d'Eclipse en cliquant sur l'icône en haut à droite.

Accueil

La première fois, dans ma version d'Eclipse (JEE) on arrive sur la perspective « Java EE ». On a besoin de la perspective « Java » simple. Pour l'avoir, il faut utiliser le menu « Window>Open perspective>Java »

Workbench Java EE

Workbench Java

On peut ensuite importer le projet dans Eclipse, pour cela il faut utiliser le menu « File>Import »

Import

Il faut d'abord sélectionner l'emplacement du projet sur le disque dur.

Import

Import

Si c'est la première fois qu'on importe un projet Maven, Eclipse devrait indiquer des erreurs, car il manque un peu de configuration.

Projet ouvert avec des erreurs

Pour configurer la variable manquante, il faut utiliser le menu « Window>Preferences ». Dans la popup qui s'ouvre, il faut aller dans la rubrique « Java>Build Path>Classpath Variables » et cliquer sur le bouton d'ajout d'une nouvelle variable.

Configuration

Il faut ajouter une variable nommée « M2_REPO » et indiquer le dossier dans lequel sont stockées les bibliothèques utilisées par Maven (cf. annexes)

M2_REPO

Après validation, Eclipse va demander de reconstruire le projet, ce qu'il faut accepter.

Rebuild

Les erreurs ne sont plus présentes et on a désormais la liste des dépendances utilisées (ici Guava, JUnit et JSR305)

Dépendances

Les classes Java sont dans « src>main>java »

Classes dans src>main>java

Les classes de test sont dans « src>test>java »

Tests dans src>test>java

On peut vérifier que tout est bon en lançant la classe de test « SimpleCalculetteTest » (clic droit sur le nom de la classe de test, puis « Run as>Junit test ».

JUnit

Et voilà…

Dans les nouvelles versions d'Eclipse, il est possible d'importer directement un projet Maven sans passer par les étapes dans la console. Ça va donc plus vite et c'est plus simple. Néanmoins, à titre personnel, je préfère utiliser la ligne de commande pour conserver une plus grande maitrise, d'autant que je n'ai accès qu'à la ligne de commande en SSH sur mon serveur.

III - Conclusions

Pour un premier import dans Eclipse, c'était simple, non ? Pour les prochains imports, certaines étapes ne seront plus nécessaires, par exemple l'ajout de la variable « M2_REPO ».

Et pour que ce soit plus simple, je vous propose une petite vidéo de toutes ces étapes, en 5 minutes chrono.

Animation en format "youtube" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/ho0OXYLQxEk

Vos retours nous aident à améliorer nos publications. N'hésitez donc pas à commenter cet article sur le forum : Commentez

IV - Remerciements

Je tiens à remercier, en tant qu'auteur de tutoriel rapide, toutes les personnes qui m'ont aidé et soutenu. Je pense tout d'abord à mes collègues qui subissent mes questions au quotidien, mais aussi à mes contacts et amis du web, dans le domaine de l'informatique ou non, qui m'ont fait part de leurs remarques et critiques. Bien entendu, je n'oublie pas l'équipe de developpez.com qui m'a guidé dans la rédaction de cet article et m'a aidé à le corriger et le faire évoluer, principalement sur le forum.

Plus particulièrement j'adresse mes remerciements, par ordre alphabétique, à Gueritarish et keulkeul

V - Annexes

V-A - Configuration Maven

La configuration de Maven se fait dans le fichier « settings.xml » dans le dossier « conf ». Ce fichier indique par exemple l'emplacement du « Repository Maven » sur le disque.

Extrait de settings.xml

<localRepository>C:\dev\mavens\repository</localRepository>

Par défaut, sous Windows XP, le dépôt local (repository) se trouvera probablement dans « C:\Documents and Settings\USERNAME\.m2\repository » et sous Windows Vista, il se trouve dans « C:\Users\USERNAME\.m2\repository ». Sur les systèmes Unix, le repository Maven se trouve dans « ~/.m2/repository ».

C'est cette valeur qui est utilisée dans Eclipse pour la variable « M2_REPO ».

Pour choisir la version de Java que je souhaite utiliser avec Maven, j'ai pris l'habitude de modifier le fichier « mvn.bat » (sous Windows) en ajoutant la ligne suivante au début du fichier. Il y a d'autres moyens de le faire, mais je trouve que celui-ci est le plus simple/rapide.

Extrait mvn.bat

set JAVA_HOME=C:\dev\javas\jdk1.6.0_24

Comme je travaille sur de nombreux projets en même temps, avec des configurations différentes, j'ai besoin de vérifier rapidement si j'utilise bien le bon Maven. Pour cela j'ai simplement ajouté un « echo » dans mon fichier « mvn.bat ».

Extrait mvn.bat

echo Maven 3 de Thierry

Du coup, lorsque je lance une commande Maven, le début de la trace ressemble aux lignes suivantes.

Trace Maven

C:\dvp\calculette>mvn clean install eclipse:eclipse

C:\dvp\calculette>echo Maven 3 de Thierry
Maven 3 de Thierry

C:\dvp\calculette>set JAVA_HOME=C:\dev\javas\jdk1.6.0_24
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Calculette 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------

...

[INFO] Wrote Eclipse project for "calculette" to C:\dvp\calculette.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.985s
[INFO] Finished at: Thu Jan 19 20:39:52 CET 2012
[INFO] Final Memory: 14M/60M
[INFO] ------------------------------------------------------------------------
C:\dvp\calculette>

V-B - Compile Vs Install

Nous avons vu qu'il faut utiliser la commande « mvn compile » pour compiler le programme. Toutefois, par habitude, j'utilise plutôt la commande « mvn install » qui fait bien plus de choses d'un seul coup. Je l'associe en général avec la commande « mvn clean » qui nettoie les éventuelles précédentes compilations ainsi qu'à la commande « mvn site » qui génère de la documentation. En début de projet, j'ai même pris l'habitude d'associer la commande « mvn eclipse:eclipse » pour préparer les fichiers de l'IDE.

Pour faire bonne mesure, je crée un fichier nommé « build.bat » contenant toutes ces commandes pour ne pas avoir à tout retaper à chaque fois.

Toutes les commandes d'un coup

C:\dvp\calculette>mvn clean install site eclipse:eclipse

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Calculette 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ calculette ---
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ calculette ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ calculette ---
[INFO] Compiling 5 source files to C:\dvp\calculette\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ calculette ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ calculette ---
[INFO] Compiling 2 source files to C:\dvp\calculette\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ calculette ---
[INFO] Surefire report directory: C:\dvp\calculette\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.thi.calculette.SimpleCalculetteTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.419 sec

Results :

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ calculette ---
[INFO] Building jar: C:\dvp\calculette\target\calculette-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ calculette ---
[INFO] Installing C:\dvp\calculette\target\calculette-1.0-SNAPSHOT.jar to C:\dev\mavens\repository\com\thi\calculette\1.0-SNAPSHOT\calculette-1.0-SNAP
SHOT.jar
[INFO] Installing C:\dvp\calculette\pom.xml to C:\dev\mavens\repository\com\thi\calculette\1.0-SNAPSHOT\calculette-1.0-SNAPSHOT.pom
[INFO]
[INFO] --- maven-site-plugin:2.0.1:site (default-site) @ calculette ---
Downloading: http://repository.jboss.org/nexus/content/groups/public/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom
Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom
Downloaded: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom (6 KB at 1.8 KB/sec)
Downloading: http://repository.jboss.org/nexus/content/groups/public/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar
Downloaded: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar (41 KB at 102.6 KB/sec)
Downloading: http://repository.jboss.org/nexus/content/groups/public/org/apache/maven/skins/maven-default-skin/maven-metadata.xml
Downloading: http://repo1.maven.org/maven2/org/apache/maven/skins/maven-default-skin/maven-metadata.xml
Downloaded: http://repo1.maven.org/maven2/org/apache/maven/skins/maven-default-skin/maven-metadata.xml (341 B at 0.8 KB/sec)
Downloaded: http://repository.jboss.org/nexus/content/groups/public/org/apache/maven/skins/maven-default-skin/maven-metadata.xml (332 B at 0.1 KB/sec)
Downloading: http://repo1.maven.org/maven2/org/apache/maven/skins/maven-default-skin/1.0/maven-default-skin-1.0.jar
Downloaded: http://repo1.maven.org/maven2/org/apache/maven/skins/maven-default-skin/1.0/maven-default-skin-1.0.jar (8 KB at 18.1 KB/sec)
[INFO]
[INFO]  maven-eclipse-plugin:2.8:eclipse (default-cli) @ calculette
[INFO]
[INFO]  maven-eclipse-plugin:2.8:eclipse (default-cli) @ calculette
[INFO]
[INFO] --- maven-eclipse-plugin:2.8:eclipse (default-cli) @ calculette ---
[INFO] Using Eclipse Workspace: null
[INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER
[INFO] Not writing settings - defaults suffice
[INFO] Wrote Eclipse project for "calculette" to C:\dvp\calculette.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.826s
[INFO] Finished at: Thu Dec 15 07:28:26 CET 2011
[INFO] Final Memory: 17M/61M
[INFO] ------------------------------------------------------------------------
C:\dvp\calculette>

V-C - Lien

Pour aller plus loin avec Maven, je conseille la lecture du tutoriel de Matthieu Lux sur developpez.com à l'adresse https://matthieu-lux.developpez.com/tutoriels/java/maven/