• 20 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 5/16/23

Entraînez-vous à créer un projet Maven complet

À vous de jouer

Vous devez créer un nouveau projet Maven. Vous êtes libre de choisir le nom de votre projet et son sujet, mais vous devez respecter les consignes suivantes :

  • Votre projet doit être un projet multi-modules

  • Vous organiserez votre projet en vous appuyant sur une architecture multi-tiers telle que présentée dans le cours

  • Votre projet fourniera une application web et un jeu de batchs

Vous n'avez pas à développer l'application, seulement créer le projet Maven et quelques éléments pour pourvoir tester le résultat :

  • Une classe Main dans le module des batchs exécutée automatiquement au lancement du JAR

  • Une JSP et un fichier web.xml dans le module de l'application web

  • Au moins une classe de test unitaire (même avec un seul test passant toujours) dans chaque module

Pensez également à bien gérer les dépendances entre les modules et suivre les recommendations et bonnes pratiques vues tout au long du cours (gestion des dépendances, des plugins...).

Vous devez personnaliser le construction du votre projet Maven comme ceci :

  • Un JAR des sources de chaque module est généré automatiquement pendant la phase "package" si le profile "with-sources" est activé

  • Un JAR de la JavaDoc de chaque module est généré automatiquement pendant la phase "package"

  • Une archive (zip et/ou tar.gz) est généré automatiquement pendant la phase "package" du module des batchs, comprenant :

    • le JAR du module des batchs

    • les JAR de toutes les dépendances (scope compile et runtime)

  • Les modules batchs et application web contiennent un fichier info.properties contenant une propriété application.version remplie automatiquement par Maven avec la version de projet lors du build.

  • Possibilité de générer un site web pour le projet avec au minimum :

    • une page de documentation de l'installation (le contenu n'est pas important, cela peut être un simple "Lorem ipsum...")

    • un rapport sur les dépendances du projet

    • un rapport sur l'exécution des tests agrégé au niveau projet parent et détaillé dans chaque modules

Vérifiez votre travail

Vérifiez que vous avez bien les éléments suivants :

  • Les fichiers POM (pom.xml) sont correctement indentés et suffisamment lisibles (saut de lignes, commentaires...)

  • Le projet Xxx est bien un projet Maven multi-modules comprennant les modules :

    • xxx-batch

    • xxx-business (ou xxx-metier)

    • xxx-consumer (ou xxx-persistance)

    • xxx-model (ou xxx-modele)

    • xxx-webapp (ou xxx-application-web)

    xxx étant l'artifactId du projet parent

  • Chaque module a comme package de base :

    • xxx-batch : zzz.yyy.xxx.batch

    • xxx-business : zzz.yyy.xxx.business

    • xxx-consumer : zzz.yyy.xxx.consumer

    • xxx-model  : zzz.yyy.xxx.model

    • xxx-webapp : zzz.yyy.xxx.webapp

    xxx étant l'artifactId du projet parent
    zzz.yyy étant le groupId du projet parent

  • Le POM parent contient la définition suivante :

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              ...
            </configuration>
            <executions>
              <execution>
                <id>javadoc-jar</id>
                  <phase>package</phase>
                  <goals>
                    <goal>jar</goal>
                  </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
        ...
      </build>
      ...
    </project>
  • Le POM parent contient la définition suivante :

    <project>
      ...
      <profiles>
        <profile>
          <id>with-sources</id>
          <build>
            <plugins>
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                  ...
                </configuration>
                <executions>
                  <execution>
                    <id>source-jar</id>
                      <phase>package</phase>
                      <goals>
                        <goal>jar</goal>
                      </goals>
                  </execution>
                </executions>
              </plugin>
            </plugins>
            ...
          </build>
        </profile>
      </profiles>
      ...
    </project>

    La section <executions> n'est pas obligatoire car par défaut, le goal source-jar est câblé sur la phase package.

  • La section <dependencies> de chaque module comprend bien les dépendances vers les autres modules telles que :

    • batch --> {model, business}

    • business --> {model, consumer}

    • consumer --> {model}

    • model --> {}

    • webapp --> {model, business}

  • Les dépendances vers les bibliothèques tierces mais aussi les modules.
  • Tous les plugins utilisés dans les sections build du projet sont listés dans la section <dependancyManagement> du POM parent, avec au minimum le groupId, l'artifactId et la version.

Example of certificate of achievement
Example of certificate of achievement