Assembler un site Lutece, en quoi cela consiste ?
Lutece utilise Maven pour décrire un site à partir d’un simple fichier, le fichier pom.xml. Dans ce fichier on donne la liste des plug-ins et des composants souhaités. À partir de là, il est facile de générer le site complet prêt à être déployé sur un serveur JEE.
Assembler, c’est donc traduire les fonctionnalités souhaitées en autant de composants techniques (plug-ins) Lutece et d’écrire le pom.xml pour pouvoir préparer le site qui sera alors techniquement prêt à être déployé.
Avec cette méthode, nous allons aussi pouvoir gérer les éléments graphiques (css, images, js, modèles de pages, feuilles XSL de présentation des rubriques) et les configurations sur un outil de gestion de version, GIT par exemple. La procédure d’assemblage va alors générer non seulement un site techniquement prêt à fonctionner, mais surtout un site complètement paramétré et intégré graphiquement sur la plateforme d’hébergement choisie.
Assembler permet donc d’automatiser, de limiter les risques d’erreurs, de profiter facilement des dernières versions depuis la plateforme technique Lutece et des dernières évolutions graphiques pour avoir un site toujours à jour.
Le développement de Lutece est organisé autour d’une plate-forme d’intégration continue. Les sources du projet Lutece sont accessibles en ligne sur GitHub.
L’accès à cette plate-forme se fait à travers un portail de développement communautaire (http://dev.lutece.paris.fr). Il permet de contrôler les processus d’intégration continue, d’accéder à l’outil de suivi des demandes (JIRA), au référentiel de source public GitHub, au Wiki, aux rapports de qualité du code, d’automatiser les procédures de développement et de distribution des sites (Jenkins), d’encadrer la gestion des composants Lutece (plug-ins) en projets indépendants, de contrôler le respect des normes de développement et la qualité du code.
Le code source applicatif de Lutece est mis à jour dans le référentiel (« pushé ») par les développeurs au fur et à mesure des développements sur l’outil de gestion des sources (GitHub). La construction des packages binaire ("build") est pilotée par l'outil d’intégration Jenkins, à l’aide de "goals" Maven spécifiquement développés pour Lutece :
Jenkins se charge entre autres de construire toutes les nuits les packages de l’ensemble des projets core et plug-ins Lutece.
L’ensemble des composants est mis à jour continuellement au fur et à mesure de l’avancée des développements, il est possible de visualiser en ligne les dernières fonctionnalités réalisées sur le site de démo (http://dev.lutece.paris.fr/site-demo).
Chaque projet ou sous-projet est configuré par un fichier nommé pom.xml (POM : Project Object Model), situé à la racine du projet.
Celui-ci contient les informations nécessaires à Maven pour traiter le projet (nom du site, numéro de version, dépendances vers les plug-ins composants le site, etc.).
Le pom.xml d’un site Lutece liste donc l’ensemble des composants, chacun couvrant des fonctionnalités particulières, nécessaires pour réaliser un site du type voulu : éditorial, portail de service ou encore participatif.
Le fichier POM d’un site contient au minimum les informations suivantes :
Exemple de fichier pom.xml pour un site de formulaire paramétrable simple :
<?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/POM/4.0.0 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>
<version>1.0.0-SNAPSHOT</version>
<name>My site</name>
.....
<dependencies>
<dependency>
<groupId>fr.paris.lutece</groupId>
<artifactId>lutece-core</artifactId>
<version>5.1.1</version>
<type>lutece-core</type>
</dependency>
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-form</artifactId>
<version>4.1.1</version>
<type>lutece-plugin</type>
</dependency>
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>module-form-exportdatabase</artifactId>
<version>1.0.3</version>
<type>lutece-plugin</type>
</dependency>
</dependencies>
</project>
Dans les exemples donnés, les numéros de version sont donnés à titre indicatif. Il s’avère important de vérifier les versions disponibles pour les plug-ins, mais aussi pour leurs dépendances et de modifier en fonction.
Les plug-ins Lutece sont des composants qui permettent d’ajouter à Lutece des fonctionnalités. Chaque plug-in est un ensemble de fonctionnalités, par exemple, les formulaires en ligne seront intégrés par le plugin form, les lettres d’informations par le plugin newsletter...
Les modules sont des plug-ins de plug-ins. Ils permettent d’ajouter des fonctionnalités spécifiques à un plug-in existant. On peut citer en exemple la fonctionnalité d’export des données d’un formulaire dans une base de données tierce avec le module « module-form-exportdatabase ».
Pour plus d’informations sur le fichier pom, reportez-vous à la documentation de Maven.Pour ajouter des fonctionnalités à notre site de formulaires paramétrables simple, il faut ajouter les plug-ins et modules correspondants aux améliorations souhaitées :
<?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/POM/4.0.0 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>
<version>1.0.0-SNAPSHOT</version>
<name>My site</name>
.....
<dependencies>
<dependency>
<groupId>fr.paris.lutece</groupId>
<artifactId>lutece-core</artifactId>
<version>5.1.1</version>
<type>lutece-core</type>
</dependency>
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-form</artifactId>
<version>4.1.1</version>
<type>lutece-plugin</type>
</dependency>
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>module-form-exportdatabase</artifactId>
<version>1.0.3</version>
<type>lutece-plugin</type>
</dependency>
<!-- Ajout du plugin de gestion du captcha -->
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-captcha</artifactId>
<version>2.1.0</version>
<type>lutece-plugin</type>
</dependency>
<!-- Ajout du module du type de captcha voulu -->
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>module-captcha-jcaptcha</artifactId>
<version>2.1.11</version>
<type>lutece-plugin</type>
</dependency>
<!-- Ajout du plugin de visualisation des statistiques de fréquentation du site -->
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-piwik</artifactId>
<version>1.0.1</version>
<type>lutece-plugin</type>
</dependency>
<!-- Ajout du plugin de contrôle des champs par expression régulière -->
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-regularexpression</artifactId>
<version>3.0.2</version>
<type>lutece-plugin</type>
</dependency>
<!-- Ajout du plugin de réécriture d'url -->
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-seo</artifactId>
<version>3.2.0</version>
<type>lutece-plugin</type>
</dependency>
<!-- Ajout du plugin de visualisation des informations du serveur de déployement -->
<dependency>
<groupId>fr.paris.lutece.plugins</groupId>
<artifactId>plugin-systeminfo</artifactId>
<version>3.1.0</version>
<type>lutece-plugin</type>
</dependency>
</dependencies>
</project>
Une fois l’assemblage du POM terminé, celui-ci peut être compilé à l’aide des commandes Maven spécialement créées pour Lutece.
La commande de génération d’un site à partir de ce type de POM est la suivante :
mvn -U lutece:clean lutece:site-assembly
La compilation va permettre d’aller chercher les composants sur le repository, de les assembler dans un répertoire target qui va contenir l’ensemble des répertoires et fichiers nécessaires au bon fonctionnement du site. Le répertoire du site peut ensuite être déposé dans le répertoire webapp de Tomcat par exemple pour déploiement (voir Installer Lutece).
IMPORTANT Pour un site en recette ou en production, ne pas utiliser des plages de versions pour les dépendances. Les versions explicites doivent être utilisées. Il est conseillé de supprimer la déclaration du référentiel « Snapshot » et d’utiliser un cache maven local séparé ne contenant aucun « Snapshot » pour s’assurer du contrôle parfait de toutes les versions des composants.
La version complète du fichier POM est disponible à titre d’exemple en Annexe 1
ATTENTION les versions des composants sont à mettre à jour, le core et les plug-ins Lutece évoluent en continu.
Les outils ci-dessous permettent de réaliser un site ou POM à jour de manière simplifiée.
Plusieurs outils sont disponibles pour l’élaboration de POM de sites :
Le dernier outil permet de générer un fichier POM avec les composants à jour de manière simple et rapide, simplement en listant les plug-ins nécessaires dans son site.
Petit exemple d’utilisation pour réaliser le POM ci-dessus :
Cet outil vous permettra d’obtenir un fichier pom.xml avec les dernières versions à jour des composants.
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.