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
- conf/
- 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.