Gérer la minification de vos javascript avec le maven-javascript-plugin
Introduction
La minification d'un fichier consiste à supprimer les espaces inutiles, les commentaires et les retour à la ligne.
A titre d'exemple, le framework jquery non minifié fait 157Ko et une fois réduit, il n'en fait plus que 23Ko , la taille est pratiquement divisée par 7.
Le principal inconvénient est de rendre les fichiers plus difficiles par un humain. Dans cet article, je vais vous présenter une façon d'activer et désactiver cette minification sur les fichiers Javascript et CSS d'un projet web java.
maven-javascript-plugin
Ce plugin maven est utilisé par le framework Richfaces pour compresser les différentes librairies qui le composent (proptotype, scriptaculous) ainsi que ses propres fonctions internes. Ce plugin (parmi d'autres) est packagé avec le framework Richfaces. Ce plugin est basé sur YUI compressor.
Vous devez donc référencer le repository jboss http://repository.jboss.com/maven2/ pour pouvoir récupérer ce plugin. Ajouter les lignes suivantes dans votre pom :
<plugin> <groupId>org.richfaces.cdk</groupId> <artifactId>maven-javascript-plugin</artifactId> <version>3.3.CR1</version> </plugin>
Ci dessous un exemple de projet :

Ce projet contient 2 fichiers javascript.
Nous allons configurer le plugin maven pour qu'il regroupe en un seul les fichiers JS.
<outputDirectory>${basedir}/src/main/webapp/js/</outputDirectory>
<aggregations>
<aggregation>
<includes>
<!-- liste des fichiers a ajouter au fichier final javascript -->
<include>${project.build.directory}/${project.build.finalName}/js/1-min.js</include>
<include>${project.build.directory}/${project.build.finalName}/js/2-min.js</include>
</includes>
<!-- fichier unique -->
<output>${basedir}/src/main/webapp/js/all.js</output>
</aggregation>
</aggregations>
<excludes>
<exclude>**/all.js</exclude>
</excludes>
</configuration>
Tous les fichiers javascript se trouvant dans la webapp vont être minifiés à l'exception de ceux indiqués dans les exclusions du plugin (ici all.js car celui ci contiendra l'aggregation de nos fichiers javascripts minifiés).
Ensuite on configure les aggregations, on indique alors que notre fichier all.js contiendra en fait 1-min.js et 2-min.js
Pour lancer la compression des fichiers javascripts il suffira ensuite de lancer le goal suivant :
mvn javascript:compress
Notez que vous lancer ce goal a chaque fois que vous voudrez minifier vos fichiers javascript. Vous pouvez aussi automatisez cette tache, de manière à ce que celle-ci à chaque clean install du projet
Pour cela il faut ajouter les lignes suivantes :
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
Ce qui au final donnera la configuration suivante :
<build>
<plugins>
...
<plugin>
<groupId>org.richfaces.cdk</groupId>
<artifactId>maven-javascript-plugin</artifactId>
<version>3.3.3-CR1</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<outputDirectory>${basedir}/src/main/webapp/js/</outputDirectory>
<aggregations>
<aggregation>
<includes>
<!-- liste des fichiers a ajouter au fichier final javascript -->
<include>${project.build.directory}/${project.build.finalName}/js/1-min.js</include>
<include>${project.build.directory}/${project.build.finalName}/js/2-min.js</include>
</includes>
<!-- fichier unique -->
<output>${basedir}/src/main/webapp/js/all.js</output>
</aggregation>
</aggregations>
<excludes>
<exclude>**/all.js</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
De plus, si votre projet web est un projet JSF2, vous pouvez référencer ou non les fichiers minifiés, en les liant au projectStage
Developpement = fichiers non minifiés
Production = fichiers minifiés
Codes sources et slides de la présentation JSF2 au ParisJug
Hier soir, j'ai fait avec François PETITIT une présentation sur JSF2 au parisjug.
Vous pouvez récupérer le code source ici : http://www.cestpasdur.com/svn/webapp-contacts-jsf2/trunk/
Afficher l’arbre de composant JSF (UIViewRoot) Valorisé
Introduction
JSF est basé sur une vue arborescente de composants dont l'état est maintenu côté serveur.
En fonction des événements, du scope des managedBean et des actions qui ont été effectuées, la valeur des composants présente dans cet arbre peut évoluer. Ce court article vous présente deux façons d'afficher cet arbre valorisé à un instant T
Soirée JSF 2.0 au ParisJug le 13 octobre 2009
Le 13 octobre 2009, le ParisJug organise une soirée JSF2.
Cette présentation sera assurée par votre serviteur et mon collègue François PETITIT
Au cours de cette présentation, nous aborderons l'historique de JSF, les concepts généraux, les nouveautés introduites par cette nouvelle version :
* configuration facilitée,
* ajax natif,
* gestion des ressources,
* ...
Nous verrons également l'outillage existant, et mettrons le tout en pratique en initiant un projet de gestion de contact.
Plus d'information sur la présentation JSF2 au Paris JUG
versions-maven-plugin : notification des mises a jour de librairies et plugins
Actuellement je bosse sur des application web jsf2 et/ou java EE 6. Les librairies ne sont pas encore figées, donc de nombreux mises à jour arrivent régulièrement.
Le plugin maven version-maven-plugin peut vous informer facilement des mises à jour. de librairies, et même des plugins
Celui-ci a été releasé le 23 août dernier en version final 1.0.
Je vous propose maintenant de mettre en place ce plugin lors de l'execution du goal install sur vos projets.
Ecriture d'un plugin maven en groovy

J'ai eu la chance d'avoir il y a peu une formation à la création de plugin maven par arnaud grand gourou maven. Cependant, je n'avais pas encore eu l'occasion de mettre vraiment la main à la pâte. Je dois bosser la semaine prochaine sur un plugin maven codé en groovy et j'ai besoin de passer par la case départ pour bien comprendre comment cela fonctionne. Cet article est ma case départ...
Livre Java EE 6 (in english in the text) en dédicace ce samedi à Paris

Antonio Goncalves :
" Je vous propose de nous retrouver samedi 20 juin à la librairie Le Monde En Tique de 15h50 à 18h pour une séance de dédicace. Le principe est simple : vous venez, vous achetez un exemplaire du livre (ou plusieurs exemplaires pour offrir à votre femme et à vos parents), et je vous écris un petit mot doux. C’est un bon deal non ? "
En savoir +
Feedburner, rediriger vos flux avec .htaccess
Feedburner, rediriger vos flux avec .htaccess
Si comme moi vous avez navigué entre une dizaine de CMS, et proposé à vos utilisateurs des flux RSS avec des URL diverses et variées, vous vous retrouvez alors avec des utilisateurs qui suivent votre flux RSS avec google Reader, Netvibes ou bien leur propre butineur perso.
Seulement maintenant, vous souhaitez, à la fois économiser la bande passante consommée par les X bots, tout en utilisant les statistiques assez fournies mises à disposition par l’application de google : feedburner.
JSF2 (JSR 314) , les nouveautés
JSF ou Java server Faces est le framework java de présentation web présent dans la version actuelle de JavaEE 5, et le sera également dans la prochaine version de javaEE 6 qui devrait sortir courant juin 2009. JSF était en version 1.2 (JSR 252) pour JAVAEE 5 et la prochaine version, JSF 2 (JSR 314) fera partie de javaEE6. A cette fin, ce framework a eu droit à une nouvelle version majeure, et donc, s’est vu dôté de nouvelles fonctionnalités. Cet article a but de vous faire une présentation rapide des nouveautés de JSF2. Je reviendrais plus en détail sur les nouveautés un peu plus tard.
Hibernate, sous le capot, il fait quoi ?
Hibernate est un formidable outil pour les développeurs, mais il a cependant un inconvénient, il éloigne le développeur de ce qu’il se passe réellement entre son application et sa base de données. Ce post a juste pour objectif de vous donner quelques pistes que j’utilise pour comprendre un peu mieux ce que fait hibernate derrière mon dos.


