1
Introduction
Commençons donc notre récit par liné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 dune conférence
organisée par un Java User Group. Faisant connaissance autour
dun 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 veloppeur à un nouveau langage. De nombreux souvenirs qui rappellent
quon a tous débuté un jour, rencontles mêmes problèmes et commis les mêmes
erreurs idiotes que lon 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. Dun naturel assez désorganisé, Nicolas na jamais
réussi à mémoriser toute la liste. Il lui est même déjà arrivé de loublier ou pire,
doublier tout simplement de faire les courses. Son application était donc un extra-
ordinaire pense-bête, quil lançait à lavance 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, confron au même souci et amusé par cette solution de pur geek, lui
demande s’il a toujours son programme et sil 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 quon 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, na 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 nest 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 linformatique.
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 dune bibliothèque utilitaire pour lire le chier contenant la liste des courses.
Il lenvoie 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 nest pas homogène, soit parce que lenvironne-
ment de test ou de production nest pas équivalent à celui de développement. me
sur des systèmes dexploitation 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 loutil
make
. Cependant,
celui-ci nest 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, sest souvent trouvé face à ce problème; il lui propose dutiliser un
chier de commande universel, basé sur loutil Apache Ant.
Les fourmis à la rescousse
Quest-ce que c’est que ce "Ant"? Faisons un détour par Wikipédia pour nous en
faire une ie:
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 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 dautomatisation dans n’importe quel
langage.
Parmi les ches les plus courantes, citons la compilation, la génération de pages
HTML de document (Javadoc), la génération de rapports, lexé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 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 doriginalité
build.xml
, quil utilise lui-même sur la plu-
part de ses projets, et qui est donc rodé et bourd’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é davoir 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, éproupar de nombreuses années
dutilisation. 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 dOlivier 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 dAnt 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 à nen plus nir (que personne na dailleurs
jamais eu besoin de modier) et prenant en charge des cas de gure qui tiennent
de lexpression artistique, le tout en important dautres chiers de script pour éviter
lignoble copier-coller. Sils 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 savouent 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, nos deux scripts Ant,
pourtant irprochables, pris parément refusent obstinément la fusion. Et dixminutes
plus tard, Jason envoie un chier de quelques lignes, dune 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 singulari.
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>
Compaaux chiers Ant testés jusquici, ce chier "pom.xml" – quel drôle de nom
ne ressemble à rien de connu. Pas de directive de compilation, pas dindication
dordre dans les tâches, pas de commande dassemblage du
JAR
. Où est le secret?
Que fait Maven?
Épluchons point par point les consignes de Jason et voyons.
Linstallation 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 sassurer davoir la variable d’environnement
JAVA_HOME
qui
indique lemplacement 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 seffec-
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. Linstallation
nest 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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !