Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Aller en bas

Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Message  Guillaume le Mar 6 Jan - 17:03

1 Mise en œuvre de l’environnement de développement
La mise en œuvre de l’environnement de développement consiste donc en une intégration de Jahia au sein d’Eclipse, à une configuration du serveur Tomcat local à utiliser dans Eclipse, et à une configuration d’Eclipse pour utiliser le référentiel CVS.

1.1 Pré requis
Pour réaliser cette mise en œuvre, les pré-requis suivants sont nécessaires :
 Java SDK EE 1.5,
 Eclipse IDE 3.2,
 Plug-in d’Eclipse Web Tools Project (WTP) 1.5,
 Apache Tomcat 5.5.12.
 Jahia 5.0.3 r18957 :
 installé sur le disque à partir du package téléchargé sur le site de Jahia
 configuré via le Configuration Wizard (administrateur root, accès aux données…) et un site virtuel doit avoir été créé. On s’en assure en accédant à localhost :8080/jahia/Jahia : la page doit être une demande de connexion, et une fois connecté, la page d’accueil « corporate » doit s’afficher.

1.1.1 Configuration de l’environnement de développement

On utilise par la suite les variables suivantes :
Code:
TOMCAT_HOME_JAHIA : désigne le chemin d’accès au répertoire du serveur Tomcat fourni avec Jahia lors de l’installation de celui-ci
TOMCAT_HOME_ATELIER : désigne le chemin d’accès au répertoire du serveur Tomcat fourni avec l’atelier et utilisé par Eclipse

1.1.1.1 Intégration de jahia au sein d’eclipse
 Dans Eclipse, créer un projet Web dynamique. Le nommer « jahia », et sélectionner comme environnement d’exécution cible « Tomcat 5.5 (stable). Dans répertoire du contenu, mettre « content », et en source, « src ». Terminer la création du projet,
 Copier l’intégralité du contenu du répertoire TOMCAT_HOME_JAHIA/webapps/jahia dans le projet « jahia » que l’on vient de créer, à l’exception du dossier WEB-INF/classes. Il faut accepter lorsqu’Eclipse demande si l’on souhaite écraser les fichiers existants.
 Créer manuellement le dossier « classes » dans le dossier « content/WEB-INF/ » du projet.
 Dans les propriétés du projet, partie « Chemin de génération Java », mettre dans le dossier de génération par défaut le répertoire de classes créé : « jahia/content/WEB-INF/classes »
 Copier l’intégralité du contenu du répertoire TOMCAT_HOME_JAHIA/webapps/jahia/WEB- INF/classes dans le répertoire « src » du projet jahia.

Deux remarques sur cette configuration particulière :
1/ Il n’est pas possible de copier directement les classes dans le jahia/WEB-INF/classes sans les copier dans le répertoire « src ». En effet, le répertoire « classes » est issu de la génération à partir de sources placées dans le répertoire « src ». Si on copie les fichiers uniquement dans « classes », Eclipse s’aperçoit que ces fichiers ne sont pas issus de fichiers sources dans « src », et les supprime alors. Le répertoire « src » contiendra donc les fichiers issus de Jahia, et les éventuels développements spécifiques.

2/ Il est nécessaire d’installer Jahia et de créer un site virtuel avant d’importer le contenu de la webapp car :
 Lors de la phase de configuration avec l’assistant, Jahia modifie ses fichiers de configuration.
 Les fichiers du projet Eclipse « Jahia » ne sont pas utilisés directement par Tomcat, ils sont copiés automatiquement (c’est la phase de « publication ») vers un autre répertoire référencé par WTP.

Donc, si l’on importait dans le projet le contenu de la webapp jahia avant la configuration, et que l’on effectuait ensuite la configuration via l’assistant à partir du Tomcat d’Eclipse, les fichiers de configuration qui seraient modifiés seraient ceux du répertoire référencé par WTP (invisible pour l’usager d’Eclipse) et non ceux du répertoire projet « jahia » d’Eclipse. Il en résulterait une perte de l’adéquation entre ces deux répertoires : les fichiers les plus à jour devant être toujours ceux du projet « jahia ».

1.1.1.2 Configuration du serveur tomcat local
 Dans la vue « serveur », ajouter un serveur tomcat version 5.5. Lui donner le nom « localhost »
 Dans la vue « serveur » ajouter le projet « jahia » créé précédemment comme module web.


Résultat de l’ajout d’un serveur et du projet « jahia » comme module.

 Copier les librairies TOMCAT_HOME_JAHIA/shared/lib vers TOMCAT_HOME_ATELIER/shared/lib
 Copier les classes TOMCAT_HOME_JAHIA/shared/classes vers TOMCAT_HOME_ATELIER/shared/classes
 Dans le dossier du serveur tomcat qui a été crée au sein projet “Serveurs” de Eclipse, importer le fichier « catalina.properties » qui se trouve dans TOMCAT_HOME_ATELIER/conf


Vue du contenu du dossier du serveur tomcat qui a été crée au sein projet “Serveurs” de Eclipse

 Modifier le fichier catalina.properties : changer la valeur de l’attribut « shared.loader » en remplaçant « catalina.base » par « catalina.home »
Il faut ensuite modifier les fichiers de configuration du serveur tomcat utilisé par Eclipse. En effet, certains fichiers du tomcat fourni avec Jahia ont été modifié pour faire fonctionner jahia, il faut donc répercuter ces modifications. Cela se fait directement dans le dossier du serveur tomcat qui a été crée au sein projet “Serveurs” de Eclipse. Cette méthode permet de ne pas écraser les fichiers de configuration du serveur tomcat de l’atelier : wtp utilisera uniquement les fichiers figurant dans eclipse :
 Modifier le fichier « web.xml » :
 Modifier l’élément “servlet” de nom « default » : mettre le paramètre listings à « false »
 Modifier l’élément “servlet” de nom « cgi» : mettre le paramètre debug à « 0 »
 Modifier le fichier « server.xml » :
 Modifier l’élément “ Connector ”, ajouter l’attribut suivant : emptySessionPath="true"
 Modifier l’élément “ Sender ”, ajouter l’attribut suivant : waitForAck="true"
 Ouvrir le fichier de contexte du jahia installé : TOMCAT_HOME_JAHIA/conf/Catalina/jahia.xml. Copier l’intégralité de son contenu. Dans le fichier « server.xml » remplacer la balise « Context » présente dans la balise « Host » par l’intégralité du contenu copié. Enfin, ajouter l’attribut source="org.eclipse.jst.j2ee.server:jahia" dans l’élément « Context » que l’on vient de remplacer.
avatar
Guillaume
Administrateur

Messages : 87
Date d'inscription : 06/01/2009

Voir le profil de l'utilisateur http://jahia.frenchboard.com

Revenir en haut Aller en bas

Re: Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Message  pierre le Jeu 15 Jan - 18:04

Merci pour ce tutoriel. Je suis justement en train de me mettre en place un environnement de développement pour modifier nos templates Jahia. Personnellement je travaille avec MyEclipse, et je suis encore sous Jahia 4, donc Tomcat 4.1.x. Mais les principes sont les mêmes.

Si j'ai bien tout suivie, une fois que tout est en place comme décrit dans le post, on a un projet qui une fois déployé permet de faire des modifs dans le contenu de Jahia tel qu'il est livré avec jahia, donc le set de templates par défaut et le site par défaut. Ce qui m'amène à poser quelques questions.

Comment faire pour créer un nouveau set de templates ? Où placer les fichiers pour que le set de templates soit déployé dans le site créé par défaut à l'installation de Jahia ? Comment pourrait-on faire pour générer automatiquement le fichier jar qui encapsule ces templates et le déployer au bon endroit dans Tomcat ?

Deuxième interrogation, comme Jahia crée non seulement des données dans base mais aussi des fichiers (/WEB-INF/var/...) pour le texte contenu dans les pages, et les fichiers contenus dans le webdav (en tous cas dans la version 4.x) je suppose que si on va créer ou modifier des pages dans jahia, puis qu'on redéploie le projet créé depuis l'installation de base de jahia, on perd tous les changements faits ?

Bref, je rêve de pouvoir développer mes templates Jahia dans Eclipse sans me prendre la tête, en profitant de l'auto-complétion et de l'auto-déploiement des changements vers Tomcat, du debugging, comme je le fais pour d'autres projets, mais ça me semble encore assez problématique... Comme je suis assez pressé par le temps je vais peut-être partir sur une solution toujours dans Eclipse mais sans utiliser les fonctionnalités des projets web, en faisant tous les déploiements et manipulations avec ant.

En espérant que des développeurs plus expérimentés puissent me guider dans la bonne direction...

Cordialement,

Pierre
avatar
pierre

Messages : 3
Date d'inscription : 15/01/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Message  Guillaume le Lun 19 Jan - 17:13

Hello,

Je vais tenter de répondre à tes nombreuses questions sur le déploiement des templates :

0/ Concernant l'environnement de dév, on peut imaginer que lors de l'étape consistant à installer Jahia, tu choisisses un set de template particuliers et un nom de site particulier, pas forcément ceux par défaut. Donc, lorsque tu intégreras ce Jahia installé dans ton environnement de dev, tu te retrouveras avec le set de template particulier et le nom particulier dans ton eclipse.

1/ Pour créer un nouveau set de templates prêt à être déployé, il faut :
a) créer un fichier templates.xml qui défini tes gabarits (nom et fichier JSP), ainsi que l'image associée, le nom du set. (cf corporate_portal_templates pour un exemple de tel fichier)
b) avoir ses classes Java spécifiques éventuelles packagées dans un fichier JAR situé à la racine de son dossier de gabarit (jsp/templates/<nom site>/<set template>)
c) créer un fichier JAR qui contient a) et b) plus tous les fichiers dans le dossier de gabarit.

Pour cela, tu peux utiliser un fichier JAR tel que celui-ci que j'ai créé :

Code:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="TemplatesJarBuild" basedir="." default="buildTemplatesJar">

   <!-- Initialisation -->
   <target name="init" description="Parametrage">
      <!-- le dossier de votre projet Jahia dans eclipse -->
      <property name="project.root.dir" value="C:/Documents and Settings/gkuhmel/workspace/intranet"/>
      <!-- le dossier des sources de vos dévs. spécifiques Jahia, hors templates -->
      <property name="project.src.dir" value="${project.root.dir}/src" />
      <!-- le dossier qui contiendra le JAR créé -->
      <property name="deploy.dir" value="${project.root.dir}/deploy" />
      <!-- le dossier contenant les classes compilées (racine) -->
      <property name="project.bin.dir" value="${project.root.dir}/content/WEB-INF/classes" />   
      <!-- le dossier contenant sous SRC et CLASSES où vos classes spécifiques sont -->               
      <property name="specifique.dir" value="jahiatemplates/intranet" />   
      <!-- le nom du JAR des templates qui va être créé -->
      <property name="template.jar" value="intranet.jar"/>
      <!-- le dossier de vos gabarits à packager -->
      <property name="templates.dir" value="${project.root.dir}/content/jsp/jahia/templates/mySite/dev"/>
      <!-- le dossier ou le JAR des classes va être déposé : le dossier des templates -->
      <property name="output.jar.dir" value="${templates.dir}" />
   </target>

   <!-- Informations -->
   <target name="info" depends="init" description="Display configuration">
      <echo message="******************** " />
      <echo message="*      Création automatique du JAR des templates  *" />
      <echo message="******************** " />
      <echo message="Author                             : G. Kuhmel" />
      <echo message="Script version                : 1.0.0" />
      <echo message="Ant  version                  : ${ant.version}" />
      <echo message="Java version                  : ${ant.java.version}" />
      <echo message="Java home directory      : ${java.home}" />
      <echo message="Java classpath            :${java.class.path}" />
   </target>

   <!-- Nettoyage du repertoire de classes -->
   <target name="clean" depends="info" description="Removes all generated files">
      <echo message="Etape : clean" />
      <mkdir dir="${project.bin.dir}/${specifique.dir}" />
      <delete>      
         <fileset dir="${project.bin.dir}" includes="*.class">
            <patternset id="${specifique.dir}">
               <include name="**/*.java"/>
            </patternset>
         </fileset>
      </delete>
   </target>

   <!-- Compilation des classes -->
   <target name="compile" depends="clean">
      <echo message="Etape : compilation" />
      <javac srcdir="${project.src.dir}/${specifique.dir}" destdir="${project.bin.dir}/${specifique.dir}" debug="on" />
   </target>

   <!-- Création du fichier JAR contenant les classes-->
   <target name="buildClassesJar" depends="compile">
      <echo message="Etape : création du fichier JAR des classes" />
      <jar jarfile="${templates.dir}/classes.jar" basedir="${project.bin.dir}/jahiatemplates"/>
   </target>
   
   <!-- Création du fichier JAR contenant les templates et le JAR des classes-->
   <target name="buildTemplatesJar" depends="buildClassesJar">      
      <echo message="Etape : création du fichier JAR des templates" />
      <mkdir dir="${deploy.dir}"/>
      <jar jarfile="${deploy.dir}/${template.jar}" basedir="${templates.dir}"/>
   </target>
</project>


2/ Lorsque tu installes Jahia, on te demande de sélectionner un jeu de gabarit. Pour que tu puisses sélectionner ton set spécial, tu dois placer le JAR créé dans "new_templates", et définir la clé "default_templates_set" dans le jahia.properties afin que le set spécifique soit celui proposé par défaut.

3/ Pour déployer automatiquement le JAR, tu peux modifier le script ANT ci dessus pour ajouter la copie du JAR créé dans le dossier "new_templates".

Ce qu'il faut comprendre, c'est que le déploiement par JAR n'est valable que pour l'initialisation d'un site virtuel. C'est à dire que tu ne peux pas faire de mise à jour de set de template sur un site existant en utilisant le déploiement JAR : il faut pour cela faire une modification directe des fichiers JSP dans ton dossier de gabarit de ton site virtuel !

4/ Si je comprends bien, ta dernière question concerne la mise à jour d'un site Jahia de dév vers un autre de test ou production par exemple, avec conservation des données. Effectivement, si tu redéploies le set de templates sur un jahia différent de ton jahia de dev sur lequel tu as par exemple créé des pages, tu n'auras pas le contenu mais juste les gabarits dans leur dernière version. Si tu veux migrer le contenu, tu dois exporter le contenu en format XML à partir de la page d'accueil ton site source puis le réimporter sur la page d'accueil de ton site cible. Par contre, cet import/export peut poser problème, je peux te l'expliquer si tu veux.

5/ l'environnement de dév tel que décrit te permet de faire tes modifications sur ton environnement de dév en direct sur les JSP (c'est à dire dans ton dossier de gabarit) sans avoir à faire de déploiement, et de bénéficier de la complétion et du débug.

En conclusion comme je crois le comprendre derrière tes interrogations, cet environnement ne prend pas en charge la migration vers un autre environnement (test, prod) : il faut gérer cela avec ANT et import/export.
avatar
Guillaume
Administrateur

Messages : 87
Date d'inscription : 06/01/2009

Voir le profil de l'utilisateur http://jahia.frenchboard.com

Revenir en haut Aller en bas

Re: Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Message  Neoh59 le Lun 2 Fév - 13:04

pierre a écrit:
Comment faire pour créer un nouveau set de templates ? Où placer les fichiers pour que le set de templates soit déployé dans le site créé par défaut à l'installation de Jahia ? Comment pourrait-on faire pour générer automatiquement le fichier jar qui encapsule ces templates et le déployer au bon endroit dans Tomcat ?

Sur le SVN de Jahia il y a le projet templateset_bases qui est un set de templates quasiment vide, mais avec ce qu'il faut dedans pour le compiler et faire le jar. Je pense que c'est un bon départ.

Guillaume a écrit:
2/ Lorsque tu installes Jahia, on te demande de sélectionner un jeu de gabarit. Pour que tu puisses sélectionner ton set spécial, tu dois placer le JAR créé dans "new_templates", et définir la clé "default_templates_set" dans le jahia.properties afin que le set spécifique soit celui proposé par défaut.

Pour qu'un set de templates soit disponible lors de la création d'un site est-ce qu'il ne faut pas plutot le mettre dans shared_templates ?

Guillaume a écrit:
Ce qu'il faut comprendre, c'est que le déploiement par JAR n'est valable que pour l'initialisation d'un site virtuel. C'est à dire que tu ne peux pas faire de mise à jour de set de template sur un site existant en utilisant le déploiement JAR : il faut pour cela faire une modification directe des fichiers JSP dans ton dossier de gabarit de ton site virtuel !

Je suis pas d'accord, cf ma réponse dans le sujet suivant :
http://jahia.frenchboard.com/templates-f6/creation-d-un-nouveau-template-t7.htm


Guillaume a écrit:
4/ Si je comprends bien, ta dernière question concerne la mise à jour d'un site Jahia de dév vers un autre de test ou production par exemple, avec conservation des données. Effectivement, si tu redéploies le set de templates sur un jahia différent de ton jahia de dev sur lequel tu as par exemple créé des pages, tu n'auras pas le contenu mais juste les gabarits dans leur dernière version. Si tu veux migrer le contenu, tu dois exporter le contenu en format XML à partir de la page d'accueil ton site source puis le réimporter sur la page d'accueil de ton site cible. Par contre, cet import/export peut poser problème, je peux te l'expliquer si tu veux.

En effet. Sauf erreur de ma part, tout d'abord l'import/export tient compte de l'utilisateur qui réalise l'opération. Donc pour être certain de ne rien perdre il vaut mieux réaliser les opérations avec le super-user défini lors de l'installation de Jahia. Après on peut aussi perdre des infos si nos templates comportent des erreurs.
avatar
Neoh59
Curieux de Jahia

Messages : 17
Date d'inscription : 02/02/2009
Age : 40
Localisation : Lille

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Message  Guillaume le Lun 2 Fév - 14:39

Correctif donc, apporté par Neoh59 :
Ce qu'il faut comprendre, c'est que le déploiement par JAR n'est valable que pour l'initialisation d'un site virtuel. C'est à dire que tu ne peux pas faire de mise à jour de set de template sur un site existant en utilisant le déploiement JAR : il faut pour cela faire une modification directe des fichiers JSP dans ton dossier de gabarit de ton site virtuel !

Le redéploiement de JAR est possible, les fichiers du site virtuel sont mis à jour avec le contenu du JAR. Comme nous l'avons évoqué dans un autre thread, cette méthode est conseillée pour le changement d'environnement (passage de dev à test ou production) ou pour le changement de version de set de template.
avatar
Guillaume
Administrateur

Messages : 87
Date d'inscription : 06/01/2009

Voir le profil de l'utilisateur http://jahia.frenchboard.com

Revenir en haut Aller en bas

Re: Tutorial : configurer un environnement de développement Jahia 5 avec Eclipse + WTP

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum