23 mars 2023, 15:48:03 Marie-Pierre Roux

Nouveautés Maven réalisées dans le cadre du passage à GitHub

Table des matières

1) Héritage des POMs

L’arbre d’héritage des POMs était sur 4 niveaux :

  • global-pom
    • parent-pom
      • plugins-pom
        • project-pom

Ceci présentait deux inconvénients :

  • Complexité de lecture des configurations
  • Rigidité pour les mises à jour qui nécessitent des releases à plusieurs niveaux

La nouvelle configuration des POMs prévoit un héritage direct du global-pom.

Le bloc

<parent>
        <artifactId>lutece-plugins-pom</artifactId>
        <groupId>fr.paris.lutece.plugins</groupId>
        <version>3.7</version>
</parent>

doit donc être remplacé par

<parent>
        <artifactId>lutece-global-pom</artifactId>
        <groupId>fr.paris.lutece.tools</groupId>
        <version>3.0.3</version>
</parent>

Le parent des POM n’est donc plus le parent-pom ou le plugins-pom mais le global-pom.

IMPORTANT : Ce changement est nécessaire pour tous les plugins qu’ils soient sur GitHub ou SVN.

2) Plugin Management

La partie de la configuration de plugins de la section pluginManagement se trouvant dans le parent-pom a été remontée dans le global-pom.

3) Configuration du plugin release

La configuration du plugin release de maven a été modifiée pour utiliser un provider GIT basé sur l’implémentation jgit.

4) Passage du niveau de source

Passage du niveau de source et du JDK cible de 1.6 vers 1.7.

5) Gestion des fichiers de règles checkstyle + PMD

La gestion des fichiers de règles checkstyle + PMD a été placée dans un nouvel artifact build-config dont les sources sont en GitHub. La version est basée sur une snapshot pour que les modifications soient prises en compte sans devoir releaser le global-pom. Leur mise à jour se fait par un job Jenkins et ne nécessite pas site-release.

6) Variabilisation d’informations

De nombreuses informations ont été variabilisées sous forme de propriété.

<properties>
        <memory.min>128m</memory.min>
        <memory.max>896m</memory.max>
        <targetJdk>1.7</targetJdk>
        <java.source.version>1.7</java.source.version>
        <sonar.host.url>http://dev.lutece.paris.fr/sonar</sonar.host.url>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven-site-plugin.version>3.4</maven-site-plugin.version>
        <maven-checkstyle-plugin.version>2.11</maven-checkstyle-plugin.version> <!-- Pb with 2.12. 2.13 to access license header -->
        <maven-pmd-plugin.version>3.3</maven-pmd-plugin.version>
        <maven-lutece-plugin.version>4.0.0-SNAPSHOT</maven-lutece-plugin.version>
        <maven-findbugs-plugin.version>3.0.0</maven-findbugs-plugin.version>
        <serverUrl>dev.lutece.paris.fr</serverUrl>
        <jiraBaseUrl>http://${serverUrl}/jira</jiraBaseUrl>
        <organization.logo>http://dev.lutece.paris.fr/images/banner_left.png</organization.logo>
        <build-config.location>build-config</build-config.location> <!-- directory provided by the artifact fr.paris.lutece.tools:build-config -->
        <github.project>lutece-platform</github.project>
        <twitter.account>LuteceFoundry</twitter.account>
        <openhub.id>7203</openhub.id>
</properties>

De nouvelles propriétés sont utilisées par la nouvelle skin :

  • github.project : Projet GitHUB
  • twitter.account : Compte Twitter
  • openhub.id : Identifiant OpenHUB (anciennement Ohloh)

7) Fichier de règles PMD

Le fichier de règles PMD n’était plus compatible avec les versions 4.x et 5.x de PMD. Il est remplacé par un ensemble de fichiers de règles packagé dans l’artifact build-config.

8) Suppression du plugin dashboard

Le plugin dashboard permettant de compiler plusieurs rapports a été supprimé (version beta-1 non maintenue depuis 2008 et moins évoluée que Sonar).

9) Montée de version des plugins

PluginAncienne versionNouvelle version
pmd2.7.13.3
checkstyle2.9.12.11
jdepend2.0-beta-22.0
project-info-reports2.5.12.8
site3.13.4
jxr2.32.5
changes2.82.11
change-log2.22.3
findbugs2.5.23.0.0
cobertura2.5.22.6
surefire2.12.42.18
war2.02.5

10) Intégration d’une skin spécifique

Intégration d’une skin spécifique basée sur la skin fluidoSkin 1.3.2-SNAPSHOT.

Cette version est basée sur Bootstrap 3. Les macros GitHub Ribbon, Twitter followers et OpenHUB ont été activées.

Nouvelle configuration également des images du bandeau.

11) Changements des fichiers sites

Ces fichiers contenant la déclaration et le paramétrage de la skin servent de base aux fichiers sites des projets dont le pom a pour parent le global-pom.

12) Configuration du distributionManagement

La configuration du distributionManagement des sites a été remontée du plugins-pom vers le global-pom.