8 juil. 2025, 15:00:05 Nicolas Jouanne

Gestion des versions des dépendances

Gestion des dépendances de plugins Lutèce

La gestion des dépendances proposée ci-dessous repose sur deux principes:

  • utiliser le temps du développement les dernières versions des plugin utilisés (pour bénéficier par exemple des mises à jour de sécurité)
  • figer les versions des plugin dans les pom de site en production pour avoir un build stable et reproductible quelles que soient les évolutions des plugins.

1. Gestion des dépendances de plugins Lutèce

Les dépendances des plugins Lutèce doivent rester avec des intervalles ouverts (sauf incompatibilité) pour permettre le choix des versions dans la configuration de chaque site.

Exemple :

<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>lutece-core</artifactId>
    <version>[5.0.0,)</version>   <!-- INDICATION DE COMPATIBILITE -->
    <type>lutece-core</type>
</dependency>
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>module-workflow-notifygru</artifactId>
    <version>[1.2.0,)</version>   <!-- INDICATION DE COMPATIBILITE -->
    <type>lutece-plugin</type>
</dependency>

2. Gestion des dépendances de sites Lutèce

2.1. Phase de développement

Il est recommandé d’utiliser des intervalles de versions ouverts, qui ramèneront des versions de développement (SNAPSHOT) pour bénéficier des dernières corrections/évolutions.

Exemple :

<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>lutece-core</artifactId>
    <version>[6.0.0-SNAPSHOT,)</version>   <!-- VERSION POUR LE DEVELOPPEMENT, EVOLUTIVE -->
    <type>lutece-core</type>
</dependency>
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>module-workflow-notifygru</artifactId>
    <version>1.3.9-SNAPSHOT</version>   <!-- VERSION DE DEVELOPPEMENT, EVOLUTIVE -->
    <type>lutece-plugin</type>
</dependency>

2.2. Phase de production

Warning Aucun SNAPSHOT de plugin Lutèce ne doit être utilisé en production.

En effet, si une version SNAPSHOT d’un plugin est utilisée en production, la reproduction du build du site à l’identique ne peut être garantie dans le temps.

Il faut donc publier des version RELEASE des plugin nécessaires avant la mise en production s’il n’y a pas de version RELEASE disponible contenant les fonctionnalités attendues.

Les versions doivent également être figées strictement (entre crochets), afin de ne pas laisser Maven choisir la version (dans le cas d’un conflit de dépendance par ex.).

Exemple :

<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>lutece-core</artifactId>
    <version>[6.1.2]</version>   <!-- VERSION STABLE -->
    <type>lutece-core</type>
</dependency>
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>module-workflow-notifygru</artifactId>
    <version>[1.3.8]</version>   <!-- VERSION STABLE -->
    <type>lutece-plugin</type>
</dependency>

Warning Attention ! Il est possible que les dépendances de dépendances soient en version SNAPSHOT !

Pour vérifier la présence de dépendances en SNAPSHOT, deux moyens :

  • la commande :
mvn dependency:tree

ou

mvn dependency:tree | grep SNAPSHOT
  • vérifier le contenu du répertoire WEB-INF/lib après le build

S’il subsiste des SNAPSHOTS :

  • il est alors nécessaire d’ajouter ces dépendances dans le POM du site pour figer leur version.

Exemple :

[INFO] fr.paris.lutece:site-mysite:lutece-site:1.0.0-SNAPSHOT
[INFO] |  +- fr.paris.lutece.plugins:plugin-workflow:lutece-plugin:4.3.8-SNAPSHOT:compile (version selected from constraint [4.0.0,))
[INFO] |  |  +- fr.paris.lutece.plugins:library-workflow-core:jar:1.2.3-SNAPSHOT:compile (version selected from constraint [1.2.0,))
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>lutece-core</artifactId>
    <version>[6.1.2]</version>   <!-- VERSION STABLE -->
    <type>lutece-core</type>
</dependency>
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>module-workflow-notifygru</artifactId>
    <version>[1.3.8]</version>
    <type>lutece-plugin</type>
</dependency>
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>plugin-workflow</artifactId>
    <version>[4.3.7]</version>
    <type>lutece-plugin</type>   <!-- AJOUT VERSION STABLE -->
</dependency>
<dependency>
    <groupId>fr.paris.lutece.plugins</groupId>
    <artifactId>library-workflow-core</artifactId>
    <version>[1.2.2]</version>   <!-- AJOUT VERSION STABLE -->
    <type>jar</type>
</dependency>
(...)

Après correction :

(...)
[INFO] +- fr.paris.lutece.plugins:module-workflow-notifygru:lutece-plugin:1.3.9:compile
(...)
[INFO] +- fr.paris.lutece.plugins:plugin-workflow:lutece-plugin:4.3.7:compile
(...)
[INFO] +- fr.paris.lutece.plugins:library-workflow-core:jar:1.2.2:compile
(...)

Les dernières versions publiées des plugin Lutece sont consultables à l’adresse suivante :

https://dev.lutece.paris.fr/tools/jsp/site/Portal.jsp?page=components