vendredi, avril 30, 2010

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • La construction automatique de bundles/plugins est à la mode avec Tycho. Voici un billet qui détaille les différentes solutions pour faire du build sous la plateforme Eclipse.
  • Angelo Zerr diffuse l'étape 19 de sa série sur la Conception d’un client Eclipse RCP et serveur OSGI avec Spring.
  • Toujours du côté d'Angelo, il se lance dans une nouvelle série de billet (en anglais) sur le sujet EclipseLink, OSGi, Spring et l'orienté Aspect avec Equinox Aspects. Le projet s'appelle SpringWeaver (étape 1 et étape 2).
  • Le projet Orbit a pour objectif de fournir des bibliothèques classiques (third party) sous forme de bundle OSGi. Ces bundles sont accessibles via un repository p2. La nouveauté apparue dernièrement est le regroupement logique (catégorisation) des bundles.
Java
Divers
  • Un site assez sympa qui montre, via des démonstrations, les nouveautés apportées par HTML5. Veuillez disposer d'un navigateur très récent (voir en cours de développement) pour en profiter pleinement.

J'ai besoin ... d'utiliser Tycho - Partie 3 : Construction d'un bundle OSGi

Dans le précédent billet (J'ai besoin ... d'utiliser Tycho - Partie 2 : Générer les poms Maven) nous avons montré comment générer les fichiers descripteurs Maven (pom.xml) au niveau du répertoire parent et du répertoire du bundle OSGi.

Nous nous attardons dans ce billet à montrer comment construire un projet OSGi (composé généralement d'un ensemble de bundles, dans notre cas un seul a été défini) à partir de Maven et son plugin Tycho.

Comme nous sommes dans le monde Maven, nous utiliserons les commandes classiques pour le nettoyage du projet (clean) et la construction du bundle (package ou install). Le résultat attendu est un fichier au format jar localisé dans le répertoire target du répertoire du bundle.

Ouvrir l'invite de commandes de Windows et se placer à la racine du répertoire parent. Saisir la ligne de commande ci-dessous :
mvn3 clean package
Le résultat de cette ligne de commande est sans appel, une erreur est lancée (voir capture ci-dessous).

Il est question d'une contrainte qui n'est pas respectée. En fait, le package org.osgi.framework n'est pas disponible pour la construction du bundle. Cette dépendance n'est pas respectée.

Pour résoudre ce problème, il faut préciser au plugin Tycho où se trouve la plateforme cible (target platform). La plateforme cible est en quelque sorte un entrepôt Maven. Cette plateforme cible contient tous les plugins nécessaires au fonctionnement d'une application OSGi sous Equinox. Dans notre cas, il faut pouvoir fournir un ou plusieurs plugins exposant le package org.osgi.framework.

Ainsi, pour indiquer la plateforme cible, saisir la ligne de commande ci-dessous
mvn3 clean package -Dtycho.targetPlatform=C:\eclipse3.5.2
c:\eclipse3.5.2 est le répertoire contenant l'installation d'Eclipse 3.5.2.

Après quelques secondes de compilation (un peu plus s'il y a besoin de télécharger des dépendances pour Tycho et Maven 3), un fichier jar (eclipse.tycho.osgifirstbundle-1.0.0-SNAPSHOT.jar) est disponible dans le répertoire target du bundle eclipse.tycho.osgifirstbundle. Si vous utilisez la commande install en place de package, le jar sera en plus déployé dans l'entrepôt de Maven 3.

A suivre ...
Veuillez noter que pour construire ce bundle il est nécessaire de disposer d'une plateforme cible en local sur sa machine. Si vous souhaitez vérifier votre construction sur différentes plateformes (différentes versions OSGi par exemple), il sera nécessaire de disposer autant de plateformes cibles que de versions à construire.

Nous montrerons ainsi dans le prochain billet comment utiliser un entrepôt p2 pour construire le bundle afin d'éviter de fournir explicitement les plugins de dépendance.