Table des matières
Ce tutorial a pour objet de présenter la configuration de base d'un projet dans Eclipse. On y montre comment configurer la JVM qui va faire fonctionner le projet, comment ajouter des librairies en dépendance d'un projet, comment modifier les répertoires source d'un projet, et comment créer une dépendance entre deux projets Eclipse.
Gérer les dépendances d'un projet, que ce soit sous Eclipse ou sous tout autre IDE, peut rapidement prendre des proportions importantes. Les méthodes que nous présentons ici permettent de facilement gérer des dépendances dans un périmètre raisonnable. Pour les projets de grande taille, comportant de nombreux modules, et de grandes quantités de dépendances, on préfèrera probablement utiliser un gestionnaire, tel que Maven par exemple.
Ce tutorial fait suite au tutorial Premiers pas avec Eclipse, que l'on peut consulter pour plus de détails sur l'installation de la version JEE d'Eclipse.
Eclipse est une application Java, qui fonctionne grâce à une JVM, Java Virtual Machine. Le fonctionnement d'Eclipse requiert qu'une JVM soit déjà installée sur la machine sur laquelle on installe Eclipse. Par défaut, tous les projets que l'on crée dans une installation d'Eclipse fonctionne avec cette machine virtuelle.
Il peut arriver, pour toutes sortes de raisons, que l'on veuille changer cette JVM. Examinons comment cela est possible.
Tout d'abord, notons que la JVM utilisée par notre projet est visible directement de la vue package explorer de notre projet : le nœud JRE porte la version de la JVM utilisée.
Changer la JVM utilisée peut se faire en ouvrant la fenêtre des propriétés du projet
courant : menu Project, rubrique Properties
.
Les propriétés d'un projet Eclipse s'affichent sur un panneau comportant de nombreuses options. On peut naviguer dans ces options à partir d'un ensemble de nœuds dans la colonne de gauche de ce panneau.
Sélectionnons tout d'abord le nœud Java Build Path dans la liste de gauche. Quatre onglets s'affichent sur la partie droite : Source, Projects, Libraries et Order and Export.
Sélectionnons l'onglet Libraries de la fenêtre qui s'ouvre alors. Nous reviendrons plusieurs fois sur cet onglet dans ce tutorial, dans la mesure où c'est de cet onglet que l'on gère les dépendances d'un projet.
Sur cette fenêtre, sélectionnons le JRE actif, et cliquons sur le bouton Edit....
La fenêtre qui s'ouvre nous montre que le JRE utilisé pour ce projet est bien le JRE utilisé par défaut pour tous les projets de cet espace de travail.
Commençons par déclarer des JRE supplémentaires au niveau de notre espace de travail. Pour cela cliquons sur le bouton Installed JRE... du panneau précédent.
Cela ouvre le panneau précédent, que l'on aurait pu aussi ouvrir en allant chercher la bonne option dans les Preferences d'Eclipse.
Deux options s'offrent ici à nous, qui se ressemblent beaucoup. Ce qu'il faut expliquer à Eclipse, c'est dans quel endroit nous avons installé nos JDK.
Chaque JDK est rangé dans son propre répertoire. Si tous ces répertoires se trouvent sous la même racine de notre disque, alors on peut indiquer ce répertoire racine à Eclipse, qui va se charger de l'explorer complètement. Cette façon de faire peut être un peu longue, surtout si ce répertoire racine contient d'autres sous-répertoires que nos JDK.
La deuxième option consiste à indiquer chaque répertoire qui contient un JDK, un par un.
Explorons la deuxième possibilité, et cliquons sur le bouton Add....
Dans ce cas, nous ajoutons une machine Java standard. Nous sélectionnons donc la troisième option et cliquons sur Next >.
La deuxième étape consiste à indiquer à Eclipse où se trouve notre JRE, ce que l'on fait en cliquant sur le bouton Directory... du panneau précédent. Windows ouvre alors une fenêtre qui nous permet de sélectionner le bon dossier. Une fois que cela est fait et validé, Eclipse scrute le contenu du répertoire, et identifie le JDK qui s'y trouve. Dans notre exemple, il s'agit d'un JDK v5, utile lorsque l'on travaille sur des projets legacy.
Une fois ce choix terminé, le nouveau JDK s'affiche dans la fenêtre des préférences.
Notons que de ce panneau, on peut également modifier le JDK qu'Eclipse utilisera par défaut lors de la création d'un nouveau projet.
On peut répéter cette opération autant de fois que l'on veut. Une fois que l'on a déclaré tous les JDK que l'on voulait, il ne reste plus qu'à choisir celui que l'on veut utiliser dans notre fenêtre de projet.
On constate que le changement de JRE a bien été pris en compte dans les propriétés de notre projet.
Le changement est également visible depuis la vue Package Explorer.
Un projet complet s'appuie en général sur des librairies externes, distribuées sous forme d'un ou plusieurs JARs. Cette partie explique comment ajouter des JARs en dépendance d'un projet Eclipse.
L'exemple que nous allons prendre dans cette partie, consiste à ajouter les JARs de Dom4J en
dépendance de notre projet. Dom4J est une API Java permettant de manipuler des documents XML,
disponible à l'adresse
http://dom4j.sourceforge.net/dom4j-1.6.1/. La distribution de cette API est
composée d'un unique JAR : dom4j-1.6.1.jar
. Supposons que nous disposions de ce JAR
(ce n'est pas très compliqué, il suffit de le télécharger) dans un répertoire local.
Ajouter des JARs en dépendance d'un projet se fait à partir du panneau des propriétés d'un projet, le même que celui que nous avons ouvert en début de ce pas à pas. L'onglet dans lequel nous allons travailler est l'onglet Libraries, comme sur l'écran suivant.
Les deux premières options disponibles nous permettent d'ajouter ce JAR à notre projet.
L'option Add JARs... nous permet d'ajouter un JAR qui se trouve dans l'un des répertoires d'un des projets de notre espace de travail.
L'option Add External JARs... nous permet d'ajouter un JAR, quel que soit son emplacement sur le disque.
À l'inverse, le bouton Add JARs... permet d'ajouter un JAR présent dans
notre espace de travail.
Supposons que nous ayons déjà copié notre JAR Dom4J dans un répertoire lib
de notre
projet. Le nom de ce répertoire peut être celui que l'on veut, il n'est absolument pas normalisé.
Cette copie se fait simplement par glisser / déposer ou copier / coller classique.
Cliquer sur le bouton Add JARs... du panneau des propriétés de notre projet nous permet de choisir un JAR dans les projets de notre espace de travail.
On constate sur le panneau des propriétés que ce JAR a bien été ajouté.
L'ajout est également visible de la vue Package Explorer. On constate que
le fichier dom4j-1.6.1.jar
du noœud lib
porte une marque, qui indique
qu'il est utilisé en tant que dépendance du projet.
Cette façon d'ajouter des JARs un par un n'est pas très efficace, surtout si l'on a de nombreux projets, et de nombreux JARs à gérer. Eclipse nous offre deux façons d'organiser les choses : utiliser des variables et des librairies.
Les variables sont configurables à partir des préférences d'Eclipse. On peut accéder à ces préférences à partir des menus de configuration, ou du panneau de gestion des dépendances d'un projet.
Voici le panneau qui s'affiche si l'on clique sur le bouton Add Variable... du panneau des propriétés d'un projet.
Cliquons maintenant sur le bouton Configure Variable.... Le panneau suivant apparaît.
On peut, à partir de ce panneau, ajouter une nouvelle variable en cliquant sur le bouton New....
Supposons que tous nos JARs soient rangés dans un répertoire D:\java\libs
.
Commençons par définir une variable MY_LIBS_FOLDER
qui pointe sur ce répertoire.
On peut ensuite utiliser cette variable pour ajouter notre JAR Dom4J en dépendance de notre projet. Pour cela, il faut étendre cette variable, en cliquant sur le bouton Extend... du panneau d'ajout de dépendances.
Le panneau qui s'ouvre présente directement les JARs disponibles dans le répertoire pointé par la variable sélectionnée. Il n'y a plus qu'à sélectionner ceux que l'on veut mettre en dépendances de notre projet. Ici, notre répertoire ne compte qu'un seul JAR, celui de Dom4J.
Une fois choisie, notre dépendance vers Dom4J s'affiche de la façon suivante.
L'exemple que nous avons choisi est particulièrement simple : la dépendance que nous voulons ajouter est composée d'un unique JAR. Dans de nombreux cas, ajouter une "dépendance" consiste en fait à ajouter un ensemble de JARs, qui dépendent les uns des autres. L'idée de regrouper tous ces JARs en un paquet unique est donc naturelle. Dans le jargon Eclipse, ce paquet est appelé librairie, et l'on peut définir soi-même de telles librairies.
L'exemple que nous allons prendre est la librairie d'Apache Commons : HttpClient,
en version 3.1. Cette librairie dépend elle-même d'Apache Commons Logging 1.0.4 et
d'Apache Commons Codec 1.2. On a donc regroupé ces trois JARs dans un répertoire
D:\java\libs\common-httpclient-3.1
.
Cliquer sur le bouton Add Library... du panneau des propriétés de notre projet nous amène au panneau suivant.
Toutes les librairies configurées au niveau de notre espace de travail sont accessibles sur ce panneau. Nous allons en créer une nouvelle, et sélectionnons donc User Library avant de cliquer sur le bouton Next >.
Nous n'avons créé aucune librairie utilisateur pour notre projet, donc cette fenêtre est vide.
Cliquer sur New... nous permet de préciser le nom de cette librairie. Nous avons le choix de ce nom, rien ne nous oblige à prendre le nom d'un JAR. Cela dit, il vaut mieux que ce nom nous donne une idée précise du contenu de cette librairie.
Cette librairie n'est pas une librairie système, donc on ne coche pas la case correspondante du panneau.
Une fois cette librairie créée, il faut encore lui ajouter les bons JARs.
On clique pour cela sur le bouton Add JARs.... Un explorateur de fichier standard nous permet d'aller chercher nos JARs là où ils se trouvent.
Notre librairie et ses JARs apparaissent finalement dans la liste des librairies utilisateur.
On peut maintenant ajouter cette librairie à notre projet.
Notre librairie apparaît bien en dépendance de notre projet. Tout d'abord, sur le panneau des propriétés de ce projet.
Puis dans la vue Package explorer.
Ajouter un projet en dépendance d'un autre est très simple. Supposons que nous ayons deux projets
dans notre espace de travail : projet-model
et projet-process
.
Notre projet projet-process
utilise les classes du projet projet-model
pour ses propres besoins. Nous avons donc besoin de déclarer que le projet projet-model
est en dépendance du projet projet-process
. Cela se fait toujours à partir du panneau
des propriétés du projet projet-process
, mais cette fois sur l'onglet
Projects.
Cliquer sur le bouton Add... ouvre une fenêtre dans laquelle on peut sélectionner le projet que l'on veut mettre en dépendance. On peut bien sûr créer des dépendances multiples. Eclipse râlera à coup sûr si l'on crée des dépendances circulaires.
Le projet ajouté apparaît alors dans la liste des projets en dépendance.
En revanche, on peut regretter qu'aucun signe graphique ne signale cette dépendance au niveau de la vue Package Explorer.
Par défaut, lorsque l'on crée un projet Java, Eclipse crée un répertoire src
dans lequel
nos fichiers source vont venir se ranger bien sagement. En fait, il existe de nombreuses raisons pour
lesquelles on peut avoir envie de créer d'autres répertoires source :
l'utilisation de différents fichiers dans différents langages ;
la séparation de nos fichiers de production, et de nos fichiers de tests.
La liste précédente n'est bien sûr pas complète, on peut trouver d'autres raisons.
Supposons que l'on veuille ranger nos fichiers Java de production dans un répertoire
src/main/java
et nos fichiers de test dans un autre répertoire src/test/java
.
Cette organisation est assez générale : si l'on ajoute des fichiers PHP (par exemple) à notre
projet, ils viendront se ranger naturellement dans un répertoire src/main/php
.
La déclaration des répertoires source d'un projet est faite dans l'onglet Source
du panneau de propriétés de notre projet. Lorsque l'on ouvre cet onglet, on se rend compte
que les fichiers source de notre projet sont rangés uniquement dans le répertoire src
,
ce que l'on savait déjà.
Commençons par retirer le répertoire src
de la liste des répertoires source. Il
suffit pour cela de le sélectionner, et de cliquer sur le bouton Remove.
On peut modifier ce répertoire en cliquant sur le bouton Add Folder....
Eclipse nous ouvre alors un panneau, qui nous montre la structure complète des
répertoires d'un projet. Dans sa configuration par défaut, le répertoire bin
qui
apparaît est utilisé pour enregistrer les fichiers compilés à partir de nos fichiers source. Comme
on n'a jamais à interagir avec ces fichiers, Eclipse n'affiche pas ce répertoire dans
la vue Package Explorer.
Ajoutons un répertoire src/main/java
à notre structure, cela se fait en cliquant
sur le bouton Create New Folder.... Notons que le chemin que l'on donne
est relatif au répertoire sélectionné dans ce panneau. Si l'on a sélectionné src
,
on n'aura donc que main/java
à entrer.
On peut cliquer directement sur le bouton Finish, ce qui nous mène à la structure suivante.
Eclipse nous affiche bien la structure que nous avons créée, dans laquelle certains répertoires sont
sélectionnés, et pas d'autres. Les répertoires sélectionnés sont les répertoires finaux qui vont
pouvoir contenir des fichiers source. Dans notre exemple, on doit donc laisser le répertoire
java
sélectionné.
De même, on ajoute un répertoire src/test/java
.
Une fois nos répertoires ajoutés, on peut cliquer sur le bouton Ok de façon à valider le tout. Le panneau des propriétés de notre projet a alors l'allure suivante.
La structure finale de notre projet est la suivante : on peut ranger nos fichiers de production
dans le répertoire src/main/java
et nos fichiers de test dans
src/test/java
.