cestpasdur.com Tutoriaux et ressources du web

20fév/104

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

14oct/091

Codes sources et slides de la présentation JSF2 au ParisJug

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/

Les slides sont également disponibles ici

Remplis sous: JAVA / JEE 1 commentaire
27sept/091

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

Taggé comme: , , Lire la suite
17sept/090

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.

Venez nombreux. mojarra

Plus d'information sur la présentation JSF2 au Paris JUG

5sept/091

versions-maven-plugin : notification des mises a jour de librairies et plugins

shell-mac-os

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.

28juin/090

Ecriture d'un plugin maven en groovy

build avec maven
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...

20juin/090

Livre Java EE 6 (in english in the text) en dédicace ce samedi à Paris

livre JEE6
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 +

15mar/090

Feedburner, rediriger vos flux avec .htaccess

Feedburner, rediriger vos flux avec .htaccess

feedburner 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.

1mar/092

JSF2 (JSR 314) , les nouveautés

jsf21JSF 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.

23fév/091

Hibernate, sous le capot, il fait quoi ?

200447958-001Hibernate 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.