« Développer en Java/Introduction à Apache Maven » : différence entre les versions
source : http://perso.orange.fr/jm.doudoux/java/tutorial/indexavecframes.htm, section 52, auteur original : Jean-Michel DOUDOUX, GNU FDL, MAJ Maven V2 et install Linux |
(Aucune différence)
|
Version du 13 août 2006 à 18:44
Maven permet de faciliter et d'automatiser certaines tâches de la gestion d'un projet Java.
Il permet notamment :
- d'automatiser certaines tâches : compilation, tests unitaires et déploiement des applications qui composent le projet
- de gérer des dépendances vis à vis des bibliothèques nécessaires au projet
- de générer des documentations concernant le projet
Au premier abord, il est facile de croire que Maven fait double emploi avec Ant. Ant et Maven sont tous les deux développés par le groupe Jakarta, ce qui prouve bien que leur utilité n'est pas aussi identique.
Ant dont le but est d'automatiser certaines tâches répétitives est plus ancien que Maven. Maven propose non seulement ces fonctionnalités mais en propose de nombreuses autres.
Pour gérer les dépendances du projet vis à vis de bibliothèques, Maven utilise un ou plusieurs repositorys qui peuvent être locaux (.maven/repository) ou distants (http://www.ibiblio.org/maven par défaut)
Maven est extensible grâce à un mécanisme de plug in qui permet d'ajouter des fonctionnalités.
Installation
Il faut télécharger la version la plus récente de Maven sur le site officiel et la dézipper.
Un assistant permet de fournir les informations concernant l'installation :
- sur la page « Licence Agreement » : lire la licence et si vous l'acceptez cliquer sur le bouton « I Agree ».
- sur la page « Installations Options » : sélectionner les éléments à installer et cliquer sur le bouton « Next ».
- sur la page « Installation Folder » : sélectionner le répertoire dans lequel Maven va être installé et cliquer sur le bouton « Install ». Par défaut sous linux :
/usr/local/maven-2.0.3
ou, sous Windows :
C:\Program Files\Apache Software Foundation\maven-2.0.3
- une fois les fichiers copiés, il suffit de cliquer sur le bouton « Close ».
Sous Windows, un élément de menu nommé « Apache Software Foundation / Maven --version » est ajouté dans le menu « Démarrer / Programmes ».
Pour utiliser Maven, la variable d'environnement système nommée MAVEN_HOME doit être définie avec comme valeur le chemin absolu du répertoire dans lequel Maven est installé. Par défaut, cette variable est configurée automatiquement lors de l'installation sous Windows.
C:\Program Files\Apache Software Foundation\maven-2.0.3\bin";%PATH%
Sous Linux :
export PATH=/usr/local/maven-2.0.3/bin:$PATH
Il est aussi particulièrement pratique d'ajouter le répertoire %MAVEN_HOME%/bin à la variable d'environnement PATH. Maven étant un outil en ligne de commande, cela évite d'avoir à saisir son chemin complet lors de son exécution.
Il faut s'assurer également que le JDK est installé. Le réperoire par défaut sous Windows est C:\Program Files\Java\jdk1.5.0_02. Sous linux :
JAVA_HOME=/usr/java/jdk1.5.0_02
Enfin, il faut créer un repository local en utilisant la commande ci dessous dans une boîte de commandes DOS :
C:\>install_repo.bat %HOMEDRIVE%%HOMEPATH%
Pour s'assurer de l'installation correcte de Maven, il suffit de saisir la commande :
maven --version
ou
mvn --version
Il devrait alors apparaître :
__ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| --version
Lors de la première exécution de Maven, ce dernier va constituer le repository local (une connexion internet est nécessaire).
__ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0-rc2 Le rÚpertoire C:\Documents and Settings\Administrateur\.maven\repository n'exist e pas. Tentative de crÚation. Tentative de tÚlÚchargement de commons-lang-1.0.1.jar. .................................................. .................................................. Tentative de tÚlÚchargement de commons-net-1.1.0.jar. .................................................. .................................................. Tentative de tÚlÚchargement de dom4j-1.4-dev-8.jar. .................................................. .................................................. Tentative de tÚlÚchargement de xml-apis-1.0.b2.jar. ..................................................
Les plug-ins
Toutes les fonctionnalités de Maven sont proposées sous la forme de plug-ins. Le fichier maven.xml permet de configurer les plug-ins installés.
Le fichier project.xml
Maven est orienté projet, donc le projet est l'entité principale gérée par Maven. Il est nécessaire de fournir à Maven une description du projet (Project descriptor) sous la forme d'un document XML nommé project.xml et situé à la racine du répertoire contenant le projet.
<project> <id>P001</id> <name>TestMaven</name> <currentVersion>1.0</currentVersion> <shortDescription>Test avec Maven</shortDescription> <developers> <developer> <name>Jean Michel D.</name> <id>jmd</id> <email>jmd@test.fr</email> </developer> </developers> <organization> <name>Jean-Michel</name> </organization> </project>
Il est possible d'inclure la valeur d'un tag défini dans le document dans un autre tag.
... <shortDescription>${pom.name} est un test avec Maven</shortDescription> ...
Il est possible d'hériter d'un fichier project.xml existant dans lequel des caractéristiques communes à plusieurs projets sont définies. La déclaration dans le fichier du fichier père se fait avec le tag <extend>. Dans le fichier fils, il suffit de redéfinir ou de définir les tags nécessaires.
Exécution de Maven
Maven s'utilise en ligne de commande sous la forme suivante :
Maven plugin:goal
Il faut exécuter Maven dans le répertoire qui contient le fichier project.xml. Si les paramètres fournis ne sont pas corrects, une exception est levée :
C:\java\test\testmaven>maven compile __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0-rc2 com.werken.werkz.NoSuchGoalException: No goal [compile] at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:190) at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java: 531) at org.apache.maven.MavenSession.attainGoals(MavenSession.java:265) at org.apache.maven.cli.App.doMain(App.java:466) at org.apache.maven.cli.App.main(App.java:1117) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.werken.forehead.Forehead.run(Forehead.java:551) at com.werken.forehead.Forehead.main(Forehead.java:581) Total time: 4 seconds Finished at: Tue May 18 14:17:18 CEST 2004
Pour obtenir une liste complète des plug-ins à disposition de Maven, il suffit d'utiliser la commande
maven –g
La commande maven clean permet d'effacer tous les fichiers générés par Maven. C:\java\test\testmaven>maven clean
__ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0-rc2 build:start: clean:clean: [delete] Deleting directory C:\java\test\testmaven\target [delete] Deleting: C:\java\test\testmaven\velocity.log BUILD SUCCESSFUL Total time: 2 minutes 7 seconds Finished at: Tue May 25 14:19:03 CEST 2004 C:\java\test\testmaven>
Génération du site du projet
Maven propose une fonctionnalité qui permet de générer automatique un site web pour le projet regroupant un certain nombre d'informations utiles le concernant.
Pour demander la génération du site, il suffit de saisir la commande
maven site:generate
Lors de l'exécution de cette commande, un répertoire target/docs est créé contenant les différents éléments du site.
C:\java\test\testmaven\target\docs>dir Le volume dans le lecteur C s'appelle MACHINE Le numéro de série du volume est 3T78-19E4 Répertoire de C:\java\test\testmaven\target\docs 25/05/2004 14:21 <DIR> . 25/05/2004 14:21 <DIR> .. 25/05/2004 14:21 <DIR> apidocs 25/05/2004 14:21 5 961 checkstyle-report.html 25/05/2004 14:21 1 637 cvs-usage.html 25/05/2004 14:21 1 954 dependencies.html 25/05/2004 14:21 <DIR> images 25/05/2004 14:21 1 625 index.html 25/05/2004 14:21 1 646 issue-tracking.html 25/05/2004 14:21 3 119 javadoc.html 25/05/2004 14:21 9 128 jdepend-report.html 25/05/2004 14:21 2 494 license.html 25/05/2004 14:21 5 259 linkcheck.html 25/05/2004 14:21 1 931 mail-lists.html 25/05/2004 14:21 4 092 maven-reports.html 25/05/2004 14:21 3 015 project-info.html 25/05/2004 14:21 <DIR> style 25/05/2004 14:21 2 785 task-list.html 25/05/2004 14:21 3 932 team-list.html 25/05/2004 14:21 <DIR> xref 14 fichier(s) 48 578 octets 6 Rép(s) 207 151 616 octets libres
Par défaut, le site généré contient un certain nombre de pages accessibles via le menu de gauche.
La partie « Project Info » regroupe trois pages : la mailing liste, la liste des développeurs et les dépendances du projet.
La partie « Project report » permet d'avoir accès à des comptes rendus d'exécution de certaines tâches : javadoc, tests unitaires, ... Certaines de ces pages ne sont générées qu'en fonction des différents éléments générés par Maven.
Le contenu du site pourra donc être réactualisé facilement en fonction des différents traitements réalisés par Maven sur le projet.
Compilation du projet
Dans le fichier project.xml, il faut rajouter un tag <build> qui va contenir les informations pour la compilation des éléments du projet.
Les sources doivent être contenues dans un répertoire dédié, par exemple src
... <build> <sourceDirectory> ${basedir}/src </sourceDirectory> </build> ...
Pour demander la compilation à Maven, il faut utiliser la commande :
Maven java :compile C:\java\test\testmaven>maven java:compile __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0-rc2 Tentative de tÚlÚchargement de commons-jelly-tags-antlr-20030211.143720.jar. ..... . build:start: java:prepare-filesystem: [mkdir] Created dir: C:\java\test\testmaven\target\classes java:compile: [echo] Compiling to C:\java\test\testmaven/target/classes [javac] Compiling 1 source file to C:\java\test\testmaven\target\classes BUILD SUCCESSFUL Total time: 12 seconds Finished at: Tue May 18 14:19:12 CEST 2004
Le répertoire « target/classes » est créé à la racine du répertoire du projet. Les fichiers .class issus de la compilation sont stockés dans ce répertoire.
La commande maven jar permet de demander la génération du packaging de l'application.
build:start: java:prepare-filesystem: java:compile: [echo] Compiling to C:\java\test\testmaven/target/classes java:jar-resources: test:prepare-filesystem: [mkdir] Created dir: C:\java\test\testmaven\target\test-classes [mkdir] Created dir: C:\java\test\testmaven\target\test-reports test:test-resources: test:compile: [echo] No test source files to compile. test:test: [echo] No tests to run. jar:jar: [jar] Building jar: C:\java\test\testmaven\target\P001-1.0.jar BUILD SUCCESSFUL Total time: 2 minutes 42 seconds Finished at: Tue May 18 14:25:39 CEST 2004
Par défaut, l'appel à cette commande effectue une compilation des sources, un passage des tests unitaires si il y en a et un appel à l'outil jar pour réaliser le packaging.
Le nom du fichier jar créé est composé de l'id du projet et du numéro de version. Il est stocké dans le répertoire racine du projet.