17 déc. 2019 23:26:55 Thomas Dumont avatar

Configuration du site


Structure des sources du site

Le répertoires des sources d'un site Lutèce a la structure suivante :

  • pom.xml
  • src/
    • conf/
      • default/ : le contenu de ce dossier reprends la structure de la WebApp qui sera déployée
      • rec/ : le contenu de ce dossier reprends la structure de la WebApp qui sera déployée
      • prod/ : le contenu de ce dossier reprends la structure de la WebApp qui sera déployée
      • ...
    • sql/ : le contenu de ce dossier reprends la structure du dossier WEB-INF/sql/ de la WebApp qui sera déployée
    • site/ : le contenu de ce dossier reprends la structure du dossier doc/xml/ de la WebApp qui sera déployée
  • webapp/ : le contenu de ce dossier reprends la structure de la WebApp qui sera déployée

Seul le pom.xml est obligatoire.

Mécanisme de surcharge des fichiers lors de la construction de la WebApp

Au moment de la construction du site, des fichiers provenant de différentes sources sont copiées dans la WebApp. Si un fichier d'une de ces sources est déjà présent dans la WebApp, alors l'ancien fichier sera remplacé par celui-ci. Les fichiers sont copiés dans l'ordre suivant :

  • 1 - fichiers apportés par le Core Lutèce
  • 2 - fichiers apportés par les composants Lutèce (dépendances de type lutece-plugin)
  • 3 - fichiers apportés par les sites Lutèce (dépendances de type lutece-site)
  • 4 - fichiers jar apportés par les autres dépendances (dépendances de type jar) copiés dans WEB-INF/lib/
  • 5 - fichiers présents dans le dossier webapp/ du site
  • 6 - fichiers présents dans le dossier src/sql/ du site copiés dans WEB-INF/sql/
  • 7 - fichiers présents dans le dossier src/site/ du site copiés dans doc/xml/
  • 8 - fichiers présents dans le dossier src/conf/<profile>/ du site

La valeur de <profile> correspond à un des profils maven définis dans Lutece-site-pom et utilisé au moment de la construction de la webapp ou default si aucun de ces profils n'est utilisé. Les profils maven définis dans Lutece-site-pom sont les suivants :

  • dev
  • rec
  • integ
  • formation
  • preprod
  • prod

Voir Fonctionnement de lutece-maven-plugin pour plus d'informations.

Exemple de surcharge de fichiers

Prenons l'exemple d'un site XYZ qui utilise un plugin ABC.

Le plugin ABC a un template dans :

(...)/plugin-ABC/webapp/WEB-INF/templates/skin/plugins/plugin-ABC/mytemplate.html (plugin)

Dans la WebApp, le template du plugin sera recopié dans :

(...)/site-XYZ/target/site-YYZ-1.0.0-SNAPSHOT/WEB-INF/templates/skin/plugins/plugin-ABC/mytemplate.html (plugin)



Si maintenant on ajoute un template modifié du plugin ABC dans les sources du site :

(...)/site-XYZ/webapp/WEB-INF/templates/skin/plugins/plugin-ABC/mytemplate.html (site)

Dans la WebApp, ce template remplacera celui provenant du plugin :

(...)/site-XYZ/target/site-YYZ-1.0.0-SNAPSHOT/WEB-INF/templates/skin/plugins/plugin-ABC/mytemplate.html (site)



Si on ajoute un autre template modifié dans les sources du site pour le profil rec :

(...)/site-XYZ/src/conf/rec/WEB-INF/templates/skin/plugins/plugin-ABC/mytemplate.html (site/rec)

Dans la WebApp construite avec le profil rec, ce template remplacera celui provenant du site :

(...)/site-XYZ/target/site-YYZ-1.0.0-SNAPSHOT/WEB-INF/templates/skin/plugins/plugin-ABC/mytemplate.html (site/rec)

Mécanisme de surcharge des propriétés et des beans lors du démarrage de la WebApp

Au démarrage de la WebApp, les propriétés des composants du site et les beans Spring sont chargés à partir des fichiers contenus dans /WEB-INF/conf/. Si un de ces fichiers apporte une propriété ou un bean déjà chargé, alors l'ancienne propriété ou l'ancien bean sera remplacé. Les fichiers sont lus dans l'ordre suivant :

  • 1) Lire les fichiers du Core dans /WEB-INF/conf/
  • 2) Lire les fichiers des plugins dans /WEB-INF/conf/plugins/
  • 3) Lire les fichiers de surcharge du Core dans /WEB-INF/conf/override/
  • 4) Lire les fichiers de surcharge des plugins dans /WEB-INF/conf/override/plugins/

Les fichiers des points 1) et 2) proviennent du Core et des composants du site s'ils n'ont pas été surchargé lors de la construction de la WebApp. Les fichiers des points 3) et 4) peuvent être apportés par le site.

Bonnes Pratiques

Les fichiers placés dans /WEB-INF/conf/override/ :

  • doivent correspondre aux fichiers placés dans /WEB-INF/conf/ afin de facilement savoir d'où viennent les propriétés ou les beans surchargés.
  • ne doivent pas reprendre toutes les propriétés ou tous les beans des fichiers placés dans /WEB-INF/conf/ mais uniquement ceux devant être modifiés afin de facilement savoir quelles surcharges ont été faites.

Exemple de surcharge de propriétés

En reprenant l'exemple du site XYZ qui utilise le plugin ABC :

Le plugin ABC a un fichier de propriété dans :

(...)/plugin-ABC/webapp/WEB-INF/conf/plugins/abc.properties

qui contient les propriétés suivantes :

abc.myproperty1=value1
abc.myproperty2=value2



Si on ajoute un fichier de propriété surchargé correspondant à celui du plugin ABC dans les sources du site :

(...)/site-XYZ/webapp/WEB-INF/conf/overrude/plugins/abc.properties

contenant la propriété suivante :

abc.myproperty1=value_override



Les deux fichiers se retrouveront dans la WebApp :

(...)/site-XYZ/target/site-YYZ-1.0.0-SNAPSHOT/WEB-INF/conf/plugins/abc.properties
(...)/site-XYZ/target/site-YYZ-1.0.0-SNAPSHOT/WEB-INF/conf/overrude/plugins/abc.properties

et après le démarrage de la WebApp les valeurs des propriétés seront :

CléValeur
abc.myproperty1 value_override
abc.myproperty2 value2

Mécanisme de surcharge des libellés lors de la construction des pages

Voir Internationalisation (i18n) pour plus d'informations.