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


    12.3.2. Archétypes tiers notables

    Cette section vous propose un bref aperçu de quelques-uns des archétypes fournis par des tiers non associés au projet Maven. Si vous recherchez une liste plus complète des archétypes disponibles, jetez un oeil à la liste des archétypes disponibles dans m2eclipse. m2eclipse vous permet de créer un nouveau projet Maven à partir d'une liste sans cesse plus nombreuse de plus de 80 archétypes couvrant la plupart des technologies. Le chapitre "Creating a Maven Project from a Maven Archetype" du livre "Developing with Eclipse and Maven" contient la liste des archétypes directement disponibles à partir du plugin m2eclipse. Les archétypes listés dans cette section sont disponibles dans la liste des archétypes par défaut générée par le mode interactif du goal generate.

    12.3.2.1. AppFuse

    AppFuse est un framework développé par Matt Raible. Vous pouvez le voir comme la Pierre de Rosette des technologies Java les plus connues comme Spring Framework, Hibernate ou iBatis. En utilisant AppFuse, vous pouvez rapidement créer une application multi-tier complète qui peut s'interfacer à plusieurs frameworks de présentation web, comme Java Server Faces, Struts ou Tapestry. En créant AppFuse 2.0, Matt Raible a mis à jour son framework en utilisant Maven 2 pour profiter de ses fonctionnalités de gestion de dépendances et de création d'archétypes. AppFuse 2 fournit les archétypes suivants, tous sont regroupés dans le groupId org.appfuse.archetypes :

    appfuse-basic-jsf et appfuse-modular-jsf

    Application complète utilisant JSF (Java Server Faces) comme couche de présentation.

    appfuse-basic-spring et appfuse-modular-spring

    Application complète utilisant Spring MVC comme couche de présentation.

    appfuse-basic-struts et appfuse-modular-struts

    Application complète utilisant Struts 2 comme couche de présentation.

    appfuse-basic-tapestry et appfuse-modular-tapestry

    Application complète utilisant Tapestry comme couche de présentation.

    appfuse-core

    Modèle objet et sa couche de persistance sans couche présentation.

    Les archétypes dont l'artifactId respecte le format appfuse-basic-* produisent une applications complète correspondant à un unique projet Maven. Les archétypes dont l'artifactId respecte le format appfuse-modular-* produisent une applications complète sous la forme d'un projet Maven multimodule qui sépare les objets du modèle métier, la couche de persistance et la couche présentation. Voici un exemple permettant de générer une application web modulaire utilisant Spring MVC :

    $ mvn archetype:generate \
          -DarchetypeArtifactId=appfuse-modular-spring \
          -DarchetypeGroupId=org.appfuse.archetypes \
          -DgroupId=org.sonatype.mavenbook \
          -DartifactId=mod-spring \
          -Dversion=1.0-SNAPSHOT \
          -DinteractiveMode=false[INFO] Scanning for projects...
    ...
    [INFO] [archetype:generate]
    [INFO] Generating project in Batch mode
    [INFO] Archetype [org.appfuse.archetypes:appfuse-modular-spring:RELEASE] found in catalog internal
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating OldArchetype: appfuse-modular-spring:RELEASE
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: groupId, Value: org.sonatype.mavenbook
    [INFO] Parameter: packageName, Value: org.sonatype.mavenbook
    [INFO] Parameter: basedir, Value: /Users/tobrien/tmp
    [INFO] Parameter: package, Value: org.sonatype.mavenbook
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: artifactId, Value: mod-spring
    ...
    [INFO] OldArchetype created in dir: /Users/tobrien/tmp/mod-spring
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    $ cd mod-spring
    $ mvn
    ... (an overwhelming amount of activity ~5 minutes) 
    $ cd web
    $ mvn jetty:run-war
    ... (Maven Jetty plugin starts a Servlet Container on port 8080)

    Il faut moins de cinq minutes entre la génération du projet à partir d'un archétype AppFuse et l'exécution de cette application web avec son authentification et son système de gestion des utilisateurs. Voici d'un bon exemple de la véritable force qu'apporte l'utilisation des archétypes Maven pour générer de nouvelles applications. Nous avons un peu simplifié le processus d'installation d'AppFuse, car nous avons oublié tout ce qui concerne le téléchargement et l'installation de la base de données MySQL. Mais cela n'a rien de très compliqué au final, surtout si vous lisez "AppFuse Quickstart Documentation".

    12.3.2.2. Plugins Confluence et JIRA

    Atlassian a créé quelques archétypes pour aider les personnes intéressées dans le développement de plugins Confluence ou JIRA. Confluence et JIRA sont respectivement un wiki et un gestionnaire d'anomalies. Ces deux produits ont acquis un grand nombre d'utilisateurs en distribuant des licences gratuites pour les projets open source. Les deux artefacts jira-plugin-archetype et confluence-maven-archetype ont le même groupeId com.atlassian.maven.archetypes. Lorsque vous générez un plugin Confluence, l'archétype va créer un fichier pom.xml qui contient les références au dépôt Atlassian et des dépendances sur l'artefact Confluence. Au final, le projet plugin Confluence disposera d'un exemple de macro et d'un descripteur atlassian-plugin.xml. En utilisant l'archétype JIRA, vous créez un projet avec une classe MyPlugin vierge et un descripteur atlassian-plugin.xml dans le répertoire ${basedir}/src/main/resources.

    Pour plus d'information sur le développement de plugin Confluence avec Maven 2, référez-vous à la page "Developing Confluence Plugins with Maven 2" disponibles sur le wiki du projet. De même, pour plus d'informations sur le développement de plugins JIRA en utilisant Maven 2, référez-vous à la page "How to Build and Atlassian Plugin" disponible sur l'Atlassian Developer Network.

    12.3.2.3. Wicket

    Apache Wicket est un framework web orienté composant. Il se focalise sur la gestion de l'état de composants serveur écrits en Java et en simple HTML. Là où un framework comme Spring MVC ou Ruby on Rails se focalise sur la fusion d'objets d'une requête avec une série de modèles de page, Wicket se concentre plutôt sur la capture des interactions et sur la structure de la page à partir d'une série de classes POJO Java. Vous pouvez générer un projet Wicket en utiliser le plugin Maven Archetype :

    $ mvn archetype:generate
    ... (select the "wicket-archetype-quickstart" artifact from the interactive menu) ...
    ... (supply a groupId, artifactId, version, package) ...
    ... (assuming the artifactId is "ex-wicket") ...
    $ cd ex-wicket
    $ mvn install
    ... (a lot of Maven activity) ...
    $ mvn jetty:run
    ... (Jetty will start listening on port 8080) ...

    Tout comme l'archétype AppFuse, cet archétype crée une application web directement exécutable par le plugin Maven Jetty. Une fois lancée, rendez-vous à l'adresse http://localhost:8080/ex-wicket, pour consulter votre application web nouvellement produite.

    Note

    Pensez à la puissance qu'apportent les archétypes Maven face à une simple approche 'copier-coller' qui a caractérisé les dernières années de développement web. Il y a six ans, sans le plugin Maven Archetype, vous auriez du parcourir un livre sur AppFuse ou sur Wicket et apprendre comment bien utiliser ces frameworks avant de pouvoir en exécuter le moindre bout de code dans un conteneur de servlets. Ou alors, vous auriez juste copié collé un projet existant et commencé à le personnaliser selon vos besoins. Avec le plugin Maven Archetype, les développeurs de framework peuvent vous fournir une application personnalisée à vos besoins en quelques minutes. Il s'agit d'un changement profond qui n'a pas encore atteint toutes les entreprises. On peut donc s'attendre à voir se multiplier le nombre d'artefacts dans les prochaines années.