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

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

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) 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) 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 et du JDK cible de 1.6 vers 1.7

5) 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 prisent 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) De nombreuses informations ont été variabilisées sous forme de property.

<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) Le fichier de règles PMD n'était plus compatibles 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) 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 :

Plugin Ancienne version Nouvelle version
pmd 2.7.1 3.3
checkstyle 2.9.1 2.11
jdepend 2.0-beta-2 2.0
project-info-reports 2.5.1 2.8
site 3.1 3.4
jxr 2.3 2.5
changes 2.8 2.11
change-log 2.2 2.3
findbugs 2.5.2 3.0.0
cobertura 2.5.2 2.6
surefire 2.12.4 2.18
war 2.0 2.5

10) 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 macro GitHub Ribbon, Twitter followers et OpenHUB ont été activées.

Nouvelle configuration également des images du bandeau.

11) Changements au niveau des fichiers sites du global-pom

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) La configuration du distributionManagement des sites a été remontée du plugins-pom vers le global-pom