3 nov. 2023 09:53:57 Thomas Dumont avatar

Créer un POM de site


Composition du POM

Le POM d'un site Lutèce contient au minimum les informations suivantes :

  • La déclaration du POM parent lutece-site-pom dans sa dernière version
  • Les méta données du site (version, name, groupId, artifactId...)
  • Les déclarations des repository Maven du projet Lutèce :
    • repository luteceRepository : contient les versions stables des composants Lutèce et de plusieurs librairies tiers
    • repository luteceSnapshot : contient les versions snapshot des composants Lutèce (facultatif)
  • La déclaration sous forme de dépendances des plugins qui composent le site

Recommandations

Pour la création d'une version stable d'un site, il faudra faire en sorte que toutes les dépendances y compris les dépendances transitives soient fixées elles aussi à une version stable afin de garantir que le site ramène les mêmes versions de composants à chaque redéploiement. Pour cela les versions explicites doivent être utilisées entre crochet dans les dépendances. Il peut être utile également de supprimer la déclaration du repository "Snapshot" pour s'assurer que toutes les versions des composants sont stables.

Le POM parent lutece-site-pom définit un certains nombres de profils maven par défaut (voir Configuration spécifique pour le site). Sauf situation particulière, il n'est souvent pas nécessaire de définir de nouveaux profils dans le POM du site.

Gestion des dépendances

Plusieurs outils sont disponibles pour l'élaboration des POM de sites :

  • AppStore : Fournit des POM de sites standards intégrant les dernières versions de chacun des plugins.
  • Liste des composants : Fournit la liste de tous les composants (plugins, modules, libraries) en indiquant les dernières versions Release et Snapshot ainsi qu'un accès rapide aux évolutions et anomalies en cours.
  • Upgrade des dépendances : Fournit la liste des dépendances dans leur dernière version au format XML du POM pour une liste de plugins donnée.
  • Création d'un POM de site : Génère un POM de site à partir d'une liste de plugins

Exemple de POM

Voici un exemple de POM :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/maven-v4_0_0.xsd">

    <parent>
        <artifactId>lutece-site-pom</artifactId>
        <groupId>fr.paris.lutece.tools</groupId>
        <version>2.0.4</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>fr.paris.lutece</groupId>
    <artifactId>site-mysite</artifactId>
    <packaging>lutece-site</packaging>
    <name>Site My Site</name>
    <version>1.0.0-SNAPSHOT</version>

    <repositories>
        <repository>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <id>luteceSnapshot</id>
            <name>luteceSnapshot</name>
            <url>http://dev.lutece.paris.fr/snapshot_repository</url>
        </repository>
        <repository>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <id>lutece</id>
            <name>luteceRepository</name>
            <url>http://dev.lutece.paris.fr/maven_repository</url>
        </repository>
    </repositories>

    <dependencies>

        <!-- Lutece Core -->
        <dependency>
            <groupId>fr.paris.lutece</groupId>
            <artifactId>lutece-core</artifactId>
            <version>[5.0.1]</version>
            <type>lutece-core</type>
        </dependency>

        <!-- Specific plugins -->
        <dependency>
            <groupId>fr.paris.lutece.plugins</groupId>
            <artifactId>plugin-myplugin</artifactId>
            <version>[1.2.1]</version>
            <type>lutece-plugin</type>
        </dependency>
        ...

        <!-- Generic plugins -->
        <dependency>
            <groupId>fr.paris.lutece.plugins</groupId>
            <artifactId>plugin-contact</artifactId>
            <version>[4.0.0]</version>
            <type>lutece-plugin</type>
        </dependency>
        ...
        <dependency>
            <groupId>fr.paris.lutece.plugins</groupId>
            <artifactId>plugin-systeminfo</artifactId>
            <version>[3.1.0]</version>
            <type>lutece-plugin</type>
        </dependency>

    </dependencies>
</project>