Simplifier la création d’un hook Liferay depuis Eclipse

Le SDK Liferay est plutôt bien fait : il existe des ant et des scripts (sh, bat) pour simplifier les tâches peu intéressantes de définition de la structure d’un hook, d’un ext, ou encore d’un thème.
Par exemple, pour créer un hook, je n’ai qu’à exécuter create.bat « nom du hook » « description du hook », et tout marche bien pour peu que ant soit dans mon classpath.

C’est bien, c’est sûr, mais moi qui aie choisi de travailler depuis Eclipse, ça ne m’amuse que moyennement d’avoir à ouvrir un terminal pour créer un simple hook (et en plus, ant n’est pas dans mon path). Impossible non plus d’utiliser la target create du build.xml car elle attend des valeurs (hook.name et hook.desc.name) qui sont fournies par le script. Fichtre !

Tout l’intérêt du script bat ne résiderait-il donc que dans la saisie des hook.name et hook.desc.name au moyen d’une interaction utilisateur basique ?!
Gagné ! et je ne vais pas m’étendre sur le décorticage du script ici.

Il est donc facilement possible de modifier le build.xml pour que je sois invité à saisir les valeur de hook.name et hook.desc.name lors de l’exécution de la target create.
Ant propose en effet une balise input qui, sous Eclipse, génère un magnifique popup me permettant de saisir le texte attendu.
Quelques modifications de conditions plus tard, c’est prêt ! Je peux maintenant créer la trame de mes hooks directement depuis Eclipse.

<?xml version="1.0"?>
<project name="hooks" basedir="." default="deploy" xmlns:antelope="antlib:ise.antelope.tasks">
<property name="project.dir" value=".." />
<import file="../build-common-plugins.xml" />
<target name="create">
<if>
<not>
<isset property="hook.name" />
</not>
<then>
<input message="Enter hook name: " addproperty="hook.name" />
</then>
</if>
<if>
<not>
<isset property="hook.display.name" />
</not>
<then>
<input message="Enter hook display name: " addproperty="hook.display.name" defaultvalue="${hook.name}" />
</then>
</if>
<if>
<not>
<isset property="hook.parent.dir" />
</not>
<then>
<property name="hook.parent.dir" value="${basedir}" />
</then>
</if>
<if>
<available file="${hook.parent.dir}/${hook.name}-hook" />
<then>
<echo message="${hook.name}-hook already exists." />
</then>
<else>
<unzip src="hook.zip" dest="${hook.parent.dir}/${hook.name}-hook" />
<replace dir="${hook.parent.dir}/${hook.name}-hook">
<replacefilter token="@hook.name@" value="${hook.name}" />
<replacefilter token="@hook.display.name@" value="${hook.display.name}" />
</replace>
</else>
</if>
</target>
</project>

Rendu la, j’entends quelques esprits chagrin me dire que je me suis embêté pour rien et que j’aurais pu installer le plugin Liferay pour Eclipse qui fait tout ça très bien. Oui, c’est vrai… Mais ma solution est générique et évite de surcharger ce pauvre Eclipse d’un plugin de plus ;-)

Cette entrée a été publiée dans Liferay. Vous pouvez la mettre en favoris avec ce permalien.

2 réponses à Simplifier la création d’un hook Liferay depuis Eclipse

    • Charles Le Seac'h dit :

      Thank you for your comment… but I’m not sure I well interpret the meaning of « abrupt ».

      • Do you mean the form of the code is hard to read ? I totally agree ! I still hadn’t find the right code formatter.
      • Do you mean my post in unclear ? Maybe. What is the most abrupt part ? What can I do to make it better ?
      • Do you mean the popup that opens to type hook name is really simple ? Yes, it is ! But « kiss » ;-)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam