Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    3.2. Création du projet Simple

    Pour commencer un nouveau projet Maven, utilisez le plugin Maven Archetype depuis la ligne de commande. Exécutez le goal archetype:generate, sélectionnez l'archetype numéro 15, et tapez "Y" pour confirmer et produire le nouveau projet :

    $ mvn archetype:generate -DgroupId=org.sonatype.mavenbook.simple \
                                        -DartifactId=simple \
                                        -DpackageName=org.sonatype.mavenbook \
                                        -Dversion=1.0-SNAPSHOT
    [INFO] Scanning for projects...
    [INFO] Searching repository for plugin with prefix: 'archetype'.
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Maven Default Project
    [INFO] task-segment: [archetype:generate] (aggregator-style)
    [INFO] ------------------------------------------------------------------------
    [INFO] Preparing archetype:generate
    [INFO] No goals needed for project - skipping
    [INFO] Setting property: velocimacro.messages.on => 'false'.
    [INFO] Setting property: resource.loader => 'classpath'.
    [INFO] Setting property: resource.manager.logwhenfound => 'false'.
    [INFO] [archetype:generate {execution: default-cli}]
    [INFO] Generating project in Interactive mode
    [INFO] No archetype defined. Using maven-archetype-quickstart \
           (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
    Choose archetype:
    ...
    12: internal -> maven-archetype-mojo (A Maven Java plugin development project)
    13: internal -> maven-archetype-portlet (A simple portlet application)
    14: internal -> maven-archetype-profiles ()
    15: internal -> maven-archetype-quickstart ()
    16: internal -> maven-archetype-site-simple (A simple site generation project)
    17: internal -> maven-archetype-site (A more complex site project)
    18: internal -> maven-archetype-webapp (A simple Java web application)
    19: internal -> jini-service-archetype (Archetype for Jini service project creation)
    Choose a number: (...) 15: : 15
    Confirm properties configuration:
    groupId: org.sonatype.mavenbook.simple
    artifactId: simple
    version: 1.0-SNAPSHOT
    package: org.sonatype.mavenbook.simple
     Y: : Y
    ...
    [INFO] Parameter: groupId, Value: org.sonatype.mavenbook.simple
    [INFO] Parameter: packageName, Value: org.sonatype.mavenbook.simple
    [INFO] Parameter: package, Value: org.sonatype.mavenbook.simple
    [INFO] Parameter: artifactId, Value: simple
    [INFO] Parameter: basedir, Value: /private/tmp
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] BUILD SUCCESSFUL

    La commande mvn correspond à l'instruction d'exécution de Maven 2. L'élément archetype:generate correspond à un goal Maven. Si vous connaissez Apache Ant, un goal Maven est analogue à une target Ant ; tous les deux décrivent une unité de tâche à accomplir lors d'un build. La paire -Dname=value représente un argument passé au goal sous la forme de propriété -D, comme pour les propriétés système que vous pourriez passer à la Machine Virtuelle Java via la ligne de commande. Le but du goal archetype:generate est de créer rapidement un projet à partir d'un archétype. Dans ce contexte, un archétype se défini comme "un modèle original ou idéal d'après lequel sont bâtis un ouvrage, une œuvre ; un prototype[2]". Il existe un grand nombre d'archétypes disponibles pour Maven, depuis une simple application Swing jusqu'à une application web complexe. Le goal archetype:generate propose de choisir parmi environ 40 archétypes. Dans ce chapitre, nous allons utiliser l'archétype le plus basique pour créer un simple squelette de projet permettant de démarrer. Le préfixe archetype correspond au plugin, et generate correspond au goal.

    Une fois ce projet généré, allons regarder la structure de répertoire Maven qui a été créée sous le répertoire simple.

    simple/1
    simple/pom.xml2
          /src/
          /src/main/3
              /main/java
          /src/test/4
              /test/java

    Ce répertoire suit les recommandations de la disposition Maven standard des répertoires. Nous détaillerons cela plus tard dans ce chapitre, pour l'instant essayons de comprendre ces quelques répertoires :

    1

    Le plugin Maven Archetype crée un répertoire simple/ dont le nom correspond à l'artifactId. C'est ce qu'on appelle le répertoire racine du projet.

    2

    Chaque projet Maven possède ce qu'on appelle un Project Object Model (POM) dans un fichier pom.xml. Ce fichier décrit le projet, configure les plugins, et déclare les dépendances.

    3

    Les sources et les ressources de notre projet se retrouvent sous le répertoire src/main. Dans le cas de notre projet Java simple, cela consistera en quelques classes Java et fichiers de propriétés. Pour un autre projet, on pourrait y trouver le répertoire racine d'une application web ou les fichiers de configuration d'un serveur d'applications. Dans un projet Java, les classes Java sont dans src/main/java et les ressources disponibles dans le classpath vont dans src/main/resources.

    4

    Les tests de notre projet vont dans src/test. Dans ce répertoire, les classes Java, comme par exemple les tests JUnit ou TestNG, sont dans src/test/java et les ressources du classpath pour les tests vont dans src/test/resources.

    Le plugin Maven Archetype a produit une classe unique org.sonatype.mavenbook.App, qui contient 13 lignes de Java avec une fonction statique main qui affiche un message :

    package org.sonatype.mavenbook;
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            System.out.println( "Hello World!" );
        }
    }

    Le plus simple des archétypes Maven produit le programme le plus simple possible : un programme qui affiche "Hello World!" sur la sortie standard.



    [2] Selon l'American Heritage Dictionary of the English Language.