Comment développer une application Java Web Start avec Maven

Le développement d’application lourde en Swing et leur déploiement via Java Web Start sont rarement mis en avant dans le monde du développement aujourd’hui. Pourtant cela me paraît être un bon choix dans certains cas, par-rapport aux applications web. Et c’en est encore un meilleur quand il faut accéder au poste client et lancer des commandes sur le système hôte.
Voilà pourquoi utiliser Swing et Java Web Start.
Maintenant passons au sujet de ce billet : comment développer une application Java Web Start avec Maven.

Tout d’abord, ce billet s’inspire largement d’un autre : http://karussell.wordpress.com/2009/05/05/maven-and-webstart-jnlp/. Le peu de littérature que j’ai pu trouver sur le web m’a poussé à en faire un moi-même.

Le code source de mon application se trouve ici : http://continuous.fr/svn/jnlp-example/
Tout d’abord, voyons le POM, ici.

Le packaging est un JAR classique :
<packaging>jar</packaging>
La section à remarquer est la suivante, qui sert à préciser que l’on va générer une application Java Web Start, et sa classe principale :
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>webstart-maven-plugin</artifactId>
</plugin>
</plugins>
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>fr.continuous.jnlp.Main</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorId>jar-with-dependencies</descriptorId>
<archive>
<manifest>
<mainClass>fr.continuous.jnlp.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jnlp</goal>
</goals>
</execution>
</executions>
<configuration>
<jnlp>
<mainClass>fr.continuous.jnlp.Main</mainClass>
</jnlp>
...
<verbose>true</verbose>
</configuration>
</plugin>
...
</plugins>
</pluginManagement>
</build>

Je vous laisse l’analyser et l’adapter à vos besoins 😉

Maintenant on lance un « mvn install » classique. Voyons ce que cela génère après un build successful :
– le JAR de l’application de le répertoire /target/
– un répertoire /target/jnlp/ contenant le même JAR et un fichier intitulé « launch.jnlp ».

C’est ce dernier fichier qui est généré par le goal Maven précédemment configuré. C’est le lanceur Java Web Start.
Il vous faudra ensuite l’inclure dans une webapp, remplacer l’URL qu’il contient par celle de votre webapp, et normalement l’application devrait se déployer sur votre poste.

CQFD !

Petit détail, l’application ne se lancera pas avec un JRE OpenJDK 6, installé par défaut sur Ubuntu. Il faut utiliser celui de Sun.

Poster un commentaire ou un rétrolien.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :