1
Introduction
Commençons donc notre récit par l’inévitable mise en garde: toute ressemblance avec
des personnes ou des situations existantes ou ayant existé ne serait que fortuite…
Prologue
Nicolas et Arnaud se sont rencontrés au cours d’une conférence
organisée par un Java User Group. Faisant connaissance autour
d’un verre, ils évoquent les souvenirs de leurs premiers pas avec
Java, devenu depuis leur plateforme de prédilection. Un Java Development Kit dans
une version qui fait sourire aujourd’hui, et les bons vieux "Hello World" qui initient
tout développeur à un nouveau langage. De nombreux souvenirs qui rappellent
qu’on a tous débuté un jour, rencontré les mêmes problèmes et commis les mêmes
erreurs idiotes que l’on dénonce aujourd’hui.
La première application un peu intéressante de Nicolas était un splendide outil de
gestion de sa liste de courses. D’un naturel assez désorganisé, Nicolas n’a jamais
réussi à mémoriser toute la liste. Il lui est même déjà arrivé de l’oublier ou pire,
d’oublier tout simplement de faire les courses. Son application était donc un extra-
ordinaire pense-bête, qu’il lançait à l’avance et qui lui envoyait èrement, dixminutes
avant son départ du bureau, un message de rappel avec la liste des courses. Autre-
ment dit, un outil de rêve totalement indispensable, à tel point que le code de ce
monument de l’informatique est respectueusement conservé quelque part.
Arnaud, confronté au même souci et amusé par cette solution de pur geek, lui
demande s’il a toujours son programme et s’il peut en faire une copie pour satisfaire
sa curiosité – la geekitude est dangereusement contagieuse!
Partageons!
De retour à la maison, Nicolas fouille dans ses archives et en retire une vieille
disquette (vous savez, ces carrés de plastique qu’on utilisait "dans le temps", avant
que la clé USB et Internet ne les fassent disparaître). Il envoie donc le trésor tant
convoité à Arnaud.
2494-Livre-Maven.indb 3 21/07/11 12:22
© 2011 Pearson Education France – Apache Maven, Version 2 et 3 – Nicolas De loof, Arnaud Héritier
4Premiers pas avec Maven Partie 1
Pour vous faire une meilleure idée de cette exceptionnelle construction logicielle,
voici les chiers qui la constituent:
Figure1.1
La structure originale du projet "noubliepaslalistedescourses".
Arnaud, qui, semble-t-il, n’a vraiment que cela à faire de son temps libre, se jette
sur cette magnique relique des années Java1.1 et tente de le compiler. Seulement,
Arnaud est un utilisateur Mac. Le chier
BAT
qui compile et assemble le logiciel en
une archive Java
JAR
est inexploitable sur son système. Arnaud n’est pas du genre
à se décourager si facilement, aussi écrit-il un chier de compilation adapté à son
environnement an de pouvoir tester ce chef-d’œuvre de l’informatique.
Deux jours plus tard, protant d’un peu de rangement, Nicolas retrouve une autre
disquette contenant une version plus avancée de son logiciel, qui utilise les fonc-
tions d’une bibliothèque utilitaire pour lire le chier contenant la liste des courses.
Il l’envoie donc à Arnaud, qui une nouvelle fois doit écrire son propre chier de
compilation.
Le "projet" étant trivial, la traduction du build.bat en build.sh est rapide. Voici pour
comparaison les deux chiers utilisés respectivement par Nicolas et Arnaud. Les
différences sont minimes mais nécessitent une reprise manuelle à chaque modi-
cation, pouvant introduire des disparités, voire des incompatibilités entre les
environnements de nos deux compères, qui peuvent leur faire perdre un temps
précieux.
De nombreux projets industriels ou communautaires sont confrontés à ce même pro-
blème et sont obligés de maintenir deux versions (ou plus) du script de construction
du logiciel, soit parce que l’équipe n’est pas homogène, soit parce que l’environne-
ment de test ou de production n’est pas équivalent à celui de développement. Même
sur des systèmes d’exploitation identiques, les outils peuvent être installés à des
emplacements différents, ce qui oblige à prévoir dans le script un ensemble de pro-
priétés que chacun devra renseigner en fonction de sa conguration.
2494-Livre-Maven.indb 4 21/07/11 12:22
© 2011 Pearson Education France – Apache Maven, Version 2 et 3 – Nicolas De loof, Arnaud Héritier
Introduction 5
Chapitre 1
Listing1.1: Les chiers de compilation utilisés respectivement
parNicolasetparArnaud
@echo off
set JAVA_HOME=C:\jdk1.3
set PATH=%JAVA_HOME%\bin
set CLASSPATH=lib\mail.jar;lib\
activation.jar
mkdir build
javac -d build src\*.java
jar cf noubliepaslalistedescourses.jar
build\*.class
#!/bin/bash
export JAVA_HOME=/opt/jdk1.3
export PATH=$JAVA_HOME/bin
export CLASSPATH=lib/mail.jar:lib/
activation.jar
mkdir build
javac -d build src/*.java
jar cf noubliepaslalistedescourses.jar
build/*.class
Sur Unix, ce problème a été traité depuis longtemps par l’outil
make
. Cependant,
celui-ci n’est pas facilement exploitable sur les machines Windows, omniprésentes
comme postes de développement.
Arnaud raconte ses déboires à son collègue Olivier. Ce dernier, utilisateur du sys-
tème Solaris, s’est souvent trouvé face à ce problème; il lui propose d’utiliser un
chier de commande universel, basé sur l’outil Apache Ant.
Les fourmis à la rescousse
Qu’est-ce que c’est que ce "Ant"? Faisons un détour par Wikipédia pour nous en
faire une idée:
Info
1
Ant est un projet open-source de la fondation Apache, écrit en Java, qui vise le déve-
loppement d’un logiciel d’automatisation des opérations répétitives tout au long du
cycle de développement logiciel, à l’instar des logiciels Make.
Le nom est un acronyme pour Another Neat Tool (un autre chouette outil).
Ant est principalement utilisé pour automatiser la construction de projets en langage
Java, mais il peut l’être pour tout autre type d’automatisation dans n’importe quel
langage.
Parmi les tâches les plus courantes, citons la compilation, la génération de pages
HTML de document (Javadoc), la génération de rapports, l’exécution d’outils annexes
(checkstyle, ndbugs, etc.), l’archivage sous forme distribuable (JAR, etc.).
1. Source : http://fr.wikipedia.org/wiki/Apache_Ant.
2494-Livre-Maven.indb 5 21/07/11 12:22
© 2011 Pearson Education France – Apache Maven, Version 2 et 3 – Nicolas De loof, Arnaud Héritier
6Premiers pas avec Maven Partie 1
Ant a connu un succès exceptionnel et occupe une place de choix dans la panoplie
de tout développeur. Aucun logiciel dédié à Java ne peut aujourd’hui se permettre de
ne pas fournir des tâches Ant. Le choix de cette solution semble donc la meilleure
marche à suivre!
Pour lui faciliter la tâche, Olivier envoie à Arnaud un script Ant, appelé
avec beaucoup d’originalité
build.xml
, qu’il utilise lui-même sur la plu-
part de ses projets, et qui est donc rodé et bourré d’options et de paramètres
indispensables permettant de le plier à tous les besoins courants.
Aurait-on trouvé avec Ant la solution miracle, rassemblant tous les suffrages?
Pas si simple: Nicolas, de son côté, désolé d’avoir causé tant de soucis à
Arnaud, a reçu le même conseil de Fabrice, qui lui aussi a proposé un
script de commandes Ant à tout faire, éprouvé par de nombreuses années
d’utilisation. Le chier d’Olivier suppose que les chiers sources java sont stockés
dans un répertoire
sources
et que les bibliothèques java sont placées sous
libraries
.
Celui de Fabrice fait des choix différents, respectivement
java
et
libs
. De plus, la
commande de compilation pour le chier d’Olivier est
ant package
alors que celle
de Fabrice est
ant jar.
La fusion de ces deux chiers, chacun apportant des options
intéressantes, est un véritable casse-tête. Rapidement, les quatre compères, qui
commencent à se prendre au sérieux avec leur liste de courses, font appel à des
connaissances spécialistes d’Ant pour les assister dans cette lourde tâche.
Ant a donc créé un nouveau métier dans le microcosme informatique: expert en
script Ant! Certains projets semblent jouer pour le concours du script le plus inu-
tilement tordu, mixant des paramètres à n’en plus nir (que personne n’a d’ailleurs
jamais eu besoin de modier) et prenant en charge des cas de gure qui tiennent
de l’expression artistique, le tout en important d’autres chiers de script pour éviter
l’ignoble copier-coller. S’ils sont fonctionnels, de tels scripts sont un enfer à main-
tenir et traduisent une organisation suspecte du projet, qui pourrait bien avoir laissé
passer un élément de complexité inutile.
Pris au jeu, nos quatre amis – qui ont trouvé un boulot en or pour avoir autant de
temps libre – ne s’avouent pas vaincus et veulent poursuivre ensemble le dévelop-
pement de ce projet. Des complications commencent à émerger. Notre petite équipe
provenant d’horizons différents, chacun a ses habitudes "maison" et ses bonnes pra-
tiques et voudrait les voir appliquées.
Et Maven dans tout ça?
Au hasard d’un de ces appels au secours, Jason les prend à contre-pied et
leur répond: "Et pourquoi ne pas utiliser plutôt Apache Maven?" Surpris,
et quelque peu incrédules devant cette proposition, ils mettent Jason au dé
de compiler ce fameux logiciel avec son outil miracle, là où nos deux scripts Ant,
pourtant irréprochables, pris séparément refusent obstinément la fusion. Et dixminutes
plus tard, Jason envoie un chier de quelques lignes, d’une simplicité surprenante, et
2494-Livre-Maven.indb 6 21/07/11 12:22
© 2011 Pearson Education France – Apache Maven, Version 2 et 3 – Nicolas De loof, Arnaud Héritier
Introduction 7
Chapitre 1
les instructions de base pour installer Maven. Àleur grande surprise, chacun arrive à
compiler le projet sur son environnement, quelle que soit sa singularité.
Voici le chier envoyé par Jason:
Listing1.2: pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>fr.noubliepaslalistedescourses</groupId>
<artifactId>noubliepaslalistedescourses</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
</project>
Comparé aux chiers Ant testés jusqu’ici, ce chier "pom.xml" – quel drôle de nom
– ne ressemble à rien de connu. Pas de directive de compilation, pas d’indication
d’ordre dans les tâches, pas de commande d’assemblage du
JAR
. Où est le secret?
Que fait Maven?
Épluchons point par point les consignes de Jason et voyons.
L’installation de Maven à proprement parler se résume à désarchiver un chier ZIP
et à dénir la variable
PATH
pour y ajouter le chemin vers le répertoire
apache-
maven/bin
. Il faut aussi s’assurer d’avoir la variable d’environnement
JAVA_HOME
qui
indique l’emplacement du JDK (Java Development Kit), ce qui est généralement le
cas sur le poste de travail des bons développeurs. La construction du projet s’effec-
tue ensuite via la commande
mvn package
depuis la ligne de commande. Rien de
bien révolutionnaire donc par rapport au script Ant que nous avions envisagé.
Jason nous a indiqué que Maven nécessitait une connexion à Internet. L’installation
n’est donc pas complète, et Maven va rechercher sur le réseau les éléments man-
quants. Effectivement, la première exécution de Maven se traduit dans la console
par une série de messages de téléchargements divers:
2494-Livre-Maven.indb 7 21/07/11 12:22
© 2011 Pearson Education France – Apache Maven, Version 2 et 3 – Nicolas De loof, Arnaud Héritier
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!