|
|
|
|
|
|
Développons en Java v 1.20 | |
| Copyright (C) 1999-2009 Jean-Michel DOUDOUX |
![]() |
![]() |
![]() |
Maven permet de faciliter et d'automatiser certaines tâches de la gestion d'un projet Java.
Le site officiel est http://maven.apache.org
Il permet notamment :
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.
Il faut télécharger le fichier maven-1.0-rc2.exe sur le site de Maven et l'exécuter.
Un assistant permet de fournir les informations concernant l'installation :
Sous Windows, un élément de menu nommé « Apache Software Foundation / Maven 1.0-rc2 » 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.
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.
Enfin, il faut créer un repository local en utilisant la commande ci dessous dans une boîte de commandes DOS :
| Exemple : |
C:\>install_repo.bat %HOMEDRIVE%%HOMEPATH% |
Pour s'assurer de l'installation correcte de Maven, il suffit de saisir la commande :
| Exemple : |
C:\>maven -v __ __ | \/ |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ |_| |_\__,_|\_/\___|_||_| v. 1.0-rc2 C:\> |
Lors de la première exécution de Maven, ce dernier va constituer le repository local (une connexion internet est nécessaire).
| Exemple : |
| \/ |__ _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. ........................................................ |
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.
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.
| Exemple : un fichier minimaliste |
<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.
| Exemple : |
...
<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.
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 :
| Exemple : |
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
Voici quelques uns des nombreux plug-ins avec leurs goals principaux :
Plug in |
Goal |
Description |
| ear |
ear |
construire une archive de type ear |
deploy |
déployer un fichier ear dans un serveur d'application |
|
| ejb |
ejb |
|
deploy |
||
jalopy |
format |
|
| java |
compile |
compiler des sources |
jar |
créer une archive de type .jar |
|
javadoc |
||
jnlp |
||
générer la documentation du projet au format PDF |
||
| site |
generate |
générer le site web du projet |
deploy |
copier le site web sur un serveur web |
|
test |
match |
exécuter des tests unitaires |
| war |
init |
|
war |
||
deploy |
La commande maven clean permet d'effacer tous les fichiers générés par Maven.
| Exemple : |
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> |
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.
| Exemple : |
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.
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
| Exemple : |
...
<build>
<sourceDirectory>
${basedir}/src
</sourceDirectory>
</build>
... |
Pour demander la compilation à Maven, il faut utiliser la commande
| Exemple : |
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.
| Exemple : |
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.
|
|
|
|
|
|
Développons en Java v 1.20 | ||
| Copyright (C) 1999-2009 Jean-Michel DOUDOUX |