Dans le précédent billet nous avons montré comment construire un bundle OSGi en se basant sur une plateforme locale pour récupérer les dépendances nécessaires. Cette solution impose que toutes les versions des plateformes soient disponibles physiquement sur le disque. Ceci a comme contrainte de devoir télécharger manuellement les plateformes en fonction des versions souhaitées. Par pratique quand il y a besoin de tester sur des versions type SNAPSHOT.
Le plugin Tycho permet d'utiliser un repository p2 pour récupérer les dépendances nécessaires à la construction du bundle. A noter que les dépendances dans le monde OSGi correspondent à des bundles. Dans le cas de l'exemple que nous construisons depuis le début, le bundle org.eclipse.osgi dans sa version 3.5.2 est utilisé (3.5.2.R35x_v20100126 pour être exact puisque nous utilisons la plateforme Galileo). Tycho se chargera donc de télécharger à partir d'un repository p2 (à définir dans les paramètres du pom.xml) les dépendances requises et les stockera dans le repository local utilisé par Maven 3.
Cibler un repository p2
Le plugin target-platform-configuration est utilisé pour aller chercher les dépendances vers un repository p2. Ce plugin permet de paramétrer les informations concernant la plateforme à utiliser.
Ci-dessous, le fichier pom.xml du répertoire parent qui a été modifié par rapport au précédent billet :
Ci-dessous, le fichier pom.xml du répertoire parent qui a été complété.
A suivre ...
Dans le prochain billet nous nous attaquerons à la construction d'applications Eclipse RCP qui à la différence des bundles OSGi nécessitent des paramétrages supplémentaires liés à la plateforme d'exécution (OS, type de processeur [32 ou 64 bits], ...).
Cibler un repository p2
Le plugin target-platform-configuration est utilisé pour aller chercher les dépendances vers un repository p2. Ce plugin permet de paramétrer les informations concernant la plateforme à utiliser.
Ci-dessous, le fichier pom.xml du répertoire parent qui a été modifié par rapport au précédent billet :
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ...>
<modelVersion>4.0.0</modelVersion>
<groupId>eclipse.tycho</groupId>
<artifactId>eclipse.tycho.osgifirstexample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>eclipse.tycho.osgifirstbundle</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.sonatype.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<resolver>p2</resolver>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>galileo</id>
<layout>p2</layout>
<url>http://download.eclipse.org/releases/galileo/</url>
</repository>
</repositories>
</project>
D'une part, nous indiquons que le plugin target-platform-configuration est utilisé et qu'il doit s'appuyer sur un repository p2. D'autre part, nous donnons dans la balise repository (connue des utilisateurs de Maven) l'emplacement du repository p2 pour la version Eclipse Galileo.
Ouvrir l'invite de commandes de Windows et se placer à la racine du répertoire parent. Saisir la ligne de commande ci-dessous :
Cibler plusieurs repository p2
Un point intéressant est d'exploiter les profiles Maven pour choisir le repository p2 qui sera utilisé pour récupérer les dépendances nécessaires.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 packagePendant le traitement de la construction du bundle, vous remarquerez que Maven via Tycho récupère la dépendance org.eclipse.osgi dans sa version 3.5.2.
Cibler plusieurs repository p2
Ci-dessous, le fichier pom.xml du répertoire parent qui a été complété.
<?xml version="1.0" encoding="UTF-8"?>Pour choisir tel ou tel repository p2 il suffit d'indiquer le profile à exploiter. Ainsi pour utiliser le repository p2 dédié à Helios, saisir la ligne de commande ci-dessous :
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ...>
<modelVersion>4.0.0</modelVersion>
<groupId>eclipse.tycho</groupId>
<artifactId>eclipse.tycho.osgifirstexample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>eclipse.tycho.osgifirstbundle</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.sonatype.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<resolver>p2</resolver>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>galileo</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>galileo</id>
<url>http://download.eclipse.org/releases/galileo/</url>
<layout>p2</layout>
</repository>
</repositories>
</profile>
<profile>
<id>helios</id>
<repositories>
<repository>
<id>helios</id>
<url>http://download.eclipse.org/releases/helios/</url>
<layout>p2</layout>
</repository>
</repositories>
</profile>
</profiles>
</project>
mvn3 clean package -PheliosLes codes sources sont disponibles ici pour la version sans profile et ici pour la version avec profile.
A suivre ...
Dans le prochain billet nous nous attaquerons à la construction d'applications Eclipse RCP qui à la différence des bundles OSGi nécessitent des paramétrages supplémentaires liés à la plateforme d'exécution (OS, type de processeur [32 ou 64 bits], ...).
Bonjour,
RépondreSupprimerJ'ai lu vos quelques messages sur OSGi et je les trouve très bien faits. Je m'intéresse aussi à cet technologie en ce moment.
Une question me trotte dans la tête depuis un petit moment mais je ne trouve pas de réponse à celle ci. Savez-vous s'il est possible de contrôler l'installation des Bundle via leur certificat. L'installation se faisant via le User Interface de equinox p2. L'idée serait de protéger ma plateforme OSGi et éviter que n'importe quel plugin y soit installé.
Merci de votre attention,
Bat
Bonjour,
RépondreSupprimerJe n'ai pas trop d'idée à ta question, je ne me suis pas intéressé à cette partie.
Je sais simplement qu'il possible lors de l'installation de plugins à partir de l'update site d'être averti qu'un bundle n'a pas été signé.
Il faudrait d'avoir regarder comment signer un bundle et ensuite du côté API de p2, voir ce qu'il propose
Bon courage
Mickael