Variant pour Java et Maven - nschonni/wet-boew GitHub Wiki

english

Table of Contents

Renseignements de base sur Maven

Pour ceux qui ne connaissent pas Maven, il s’agit d’un outil semblable à Ant à certains égards, mais qui intègre de nombreuses autres capacités qui aident les développeurs avec certaines choses, dont la gestion des dépendances, la cohérence de la structure des projets, le contrôle de la qualité ainsi que la modularité et la réutilisation du code.

Dans Maven, un projet est décrit par des métadonnées, contenues dans un fichier Project Object Model (POM). Ces métadonnées offrent un grand nombre de renseignements utiles, techniques et non techniques, sur le projet concerné, y compris :

  • la description du projet;
  • les principales coordonnées;
  • l’emplacement du code source (p. ex., coordonnées GitHub ou SVN);
  • l’emplacement du serveur pour l’intégration continue;
  • la liste des développeurs et des contributeurs;
  • les dépendances nécessaires à la réalisation du projet;
  • bien d’autres renseignements.....
Maven s’intègre à un large éventail d’outils divers et de technologies différentes et peut offrir des avantages importants sur le plan de la gestion de la configuration d’un projet. Dans Maven, vous pouvez préciser exactement de quelles versions des bibliothèques Java votre projet dépend. Puisque ces métadonnées sont généralement entrées dans votre système de contrôle des versions et rattachées à vos versions, vous serez assuré de pouvoir reconstruire votre projet à n’importe quel moment avec les bibliothèques précises que vous aviez utilisées à ce moment-là.

Maven est utilisé dans un grand nombre de projets et à peu près n’importe quelle composante ouverte Java peut être trouvée en ligne dans le Maven Central Repository (répertoire central de Maven). La popularité de Maven augmente, comme l’indique Google Trends.

Pour obtenir de plus amples renseignements sur Maven, visitez le site Web officiel, à maven.apache.org.

Aperçu

La variante pour Java et Maven est essentiellement un regroupement d’éléments de la Boîte à outils de l’expérience Web (BOEW, en anglais « WET ») dans un module Maven, appelé un « WAR overlay » (segment de recouvrement WAR). Il y a un WAR overlay pour chaque thème de la BOEW disponible.

Le fait de rendre disponibles de cette manière les éléments de la BOEW pour les applications Web en Java comporte les principaux avantages suivants :

  • L’adoption de la BOEW est rendue plus simple pour toute personne qui utilise déjà Maven.
  • La version précise de la BOEW peut être indiquée clairement dans les métadonnées de votre projet.
  • Il est plus facile d’apporter des mises à jour à la BOEW; dans certains cas où les changements sont mineurs, cela peut être aussi simple que de changer le numéro de version pour celui de la version la plus récente et de reconstruire votre application.

Comment s’en servir

Si vous utilisez Maven, cela signifie que vous pouvez inclure la BOEW en tant que dépendance Maven en inscrivant simplement l’information appropriée sur la dépendance dans la section <dependencies> de votre fichier POM, comme suit :

<dependency>
    <groupId>ca.gc.tbs-sct.wet-boew</groupid>
    <artifactId>wet-gcwu-intranet-theme-overlay</artifactid>
    <version>3.0</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

Dans ce cas-ci, nous avons précisé que le Thème d’intranet de la facilité d’emploi Web GC tiré de la BOEW est une dépendance. C’est bien, mais ne faire que cela n’aura pas d’incidence sur le fichier WEB-INF de votre application Web en Java. Ce que vous voulez probablement faire c’est de superposer (« overlay ») cette dépendance sur votre projet, d’où l’utilisation du terme « WAR overlay ». Ce que vous pouvez faire c’est de dire à Maven de prendre l’overlay (segment de recouvrement) comprenant le thème de la BOEW que vous avez désigné comme dépendance, l’extraire et le combiner avec le code de votre projet. On procèdera comme suit :

<build>
... 
    <pluginManagement>
        <plugins>
            
            <plugin> 
                <groupId>org.apache.maven.plugins</groupid>
                <artifactId>maven-war-plugin</artifactid>
                <configuration>
                    <overlays>
                        <overlay>
                            <groupId>ca.gc.tbs-sct.wet-boew</groupid>
                            <artifactId>wet-gcwu-intranet-theme-overlay</artifactid>
                            <targetPath>static/WET</targetpath>
                        </overlay>
                    </overlays>
                </configuration> 
            </plugin>
        </plugins>
    </pluginmanagement>
...
</build>

Notez que ci-dessus on précise un <targetPath> (chemin d’accès cible) dans la section <overlay>. Si un <targetPath> est précisé, les contenus WAR, plutôt que d’être extraits sous WEB-INF, seront alors extraits sous WEB-INF/<targetPath>. On recommande de procéder ainsi de façon à maintenir une séparation nette entre votre propre code et la BOEW. De plus, le fait d’avoir un fichier dédié sous WEB-INF pour le contenu statique vous permettra de configurer très facilement une stratégie de mise en cache, ce qui améliorera le rendement de votre application.

Lors de la construction de votre application, vous devriez maintenant trouver le fichier désigné par le <targetPath> dans votre fichier WAR, qui comprendra la BOEW.

Sachez que si vous vous trouvez à avoir un autre contenu dans votre projet qui se situe au même emplacement que le contenu de la BOEW (p. ex., /static/WET), le contenu de votre projet surclassera, par défaut, le contenu de l’overlay. Lorsque l’overlay de la BOEW sera appliqué, ces fichiers seront ignorés. Ce comportement par défaut peut être modifié, mais il faut pour ce faire configurer plus avant le module d’extension WAR de Maven (maven-war-plugin), ce qui est au-delà de la portée des présentes instructions.

Pour obtenir de plus amples renseignements sur les overlays, commencez par visiter le site suivant : http://maven.apache.org/plugins/maven-war-plugin/overlays.html

Artéfacts au répertoire central de Maven

Segments de recouvrement


Des autres artéfacts sont possibles...
⚠️ **GitHub.com Fallback** ⚠️