Pascalleclercq's Blog

13/05/2010

Customisation des plugins « Tycho »

Filed under: Eclipse RCP,Maven,OSGi,Tycho — pascalleclercq @ 9:56

Récemment Keukeul m »interrogeait sur la documentation des plugins « Tycho » (https://pascalleclercq.wordpress.com/2010/02/14/construire-ses-plugins-eclipse-rcp-avec-maven-c%e2%80%99est-plus-facile-maintenant-avec-maven-3-et-tycho/#comment-9).

Rappelons que Tycho peut être défini comme un ensemble de plugins maven destiné à la construction de livrables eclipse. La question posée par Keukeul est pour le moins légitime et pertinente !

Malheureusement, à ce jour, je ne connais pas d’article de référence concernant la configuration de ces plugins. La seule vraie solution aujourd’hui est de récupérer les exemples disponibles avec les sources de Tycho. (http://github.com/sonatype/sonatype-tycho/tree/master/tycho-its/projects/)

Je vais donc, à la demande générale exposer les différentes configuration des plugins Tycho que j’ai eu l’occasion d’utiliser en tentant d’expliquer le pourquoi.

1. tycho-maven-plugin

La présence de ce plugin est indispensable pour que maven sache interpréter les packaging Tycho (http://tycho.sonatype.org/packagingtypes.html). Un bloc de ce type est donc indispensable :

<build>
<plugin>
   <groupId>org.sonatype.tycho</groupId>
   <artifactId>tycho-maven-plugin</artifactId>
   <version>0.8.0</version>
   <extensions>true</extensions>
</plugin>
...
</build>

Je n’ai pas grand chose à dire de plus mis à part que ce bloc est indispensable pour que Tycho puisse fonctionner. Ce bloc est bien entendu à placer dans votre pom.xml « parent ».

2. maven-osgi-compiler-plugin

Ce plugin est ni plus ni moins l’équivalent du fameux « maven-compiler-plugin ». Il me sert à configurer l’équivalent du « -source » et « -target » du compilateur java.

<build>
     <plugins>
       <plugin>
         <groupId>org.sonatype.tycho</groupId>
         <artifactId>maven-osgi-compiler-plugin</artifactId>
         <version>0.8.0</version>
         <configuration>
           <source>1.6</source>
           <target>1.6</target>
         </configuration>
       
       </plugin>
     </plugins>
 </build>

Je n’ai pas testé autre chose sur ce plugin mais je pense qu’on peux raisonnablement espérer que l’essentiel voire la totalité des options du classique maven-compiler-plugin fonctionne (http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html)

3. target-platform-configuration

A mes yeux le plugin le plus utile à connaître. En effet, tycho fonctionne par défaut avec un repository de type « file system » à plat que l’on passe en argument du build -Dtycho.targetPlatform=c:/eclipse.

Ce que l’on veut, c’est que Tycho puisse exploiter des repository à la maven voire mieux à la p2 (tant qu’à faire de l’eclipse…). Eh bien Tycho peut faire les 2 !!!!

Comment simplement en ajoutant dans votre pom.xml ce bloc :

<build>
		<plugins>
		...
			<plugin>
				<groupId>org.sonatype.tycho</groupId>
				<artifactId>target-platform-configuration</artifactId>
				<version>0.8.0</version>
				<configuration>
					<resolver>p2</resolver>
					<pomDependencies>consider</pomDependencies>
				</configuration>
			</plugin>
		</plugins>
</build>

<repositories>
		<repository>
			<id>gallileo</id>
			<layout>p2</layout>
			<url>http://download.eclipse.org/releases/galileo</url>
		</repository>

...
</repositories>

Explications :
– la balise p2 permet de dire à maven de prendre en considération lors du build les dépendances trouvées dans le dépôt p2 positionné quelques lignes plus bas sous la balise « repositories ».
– la balise consider permet d’exploiter en même temps des dépendances provenant de repository au layout maven (c’est le cas de Spring DM par exemple). Il va sans dire que ces dépendances doivent être des bundles OSGi pour être exploitables lors du build. Si vous n’avez pas besoin de dépendance provenant d’un dépôt maven cette balise ne vous sera pas utile.

4. maven-osgi-packaging-plugin

Ce packaging est utile pour la construction de « product » (= d’exécutables) eclipse. Pour rappel, pour contruire un « product » avec Tycho vous devez créer un projet séparé ne contenant u’un fichier « .product » et dont le pom.xml possède le packaging « eclipse-application ».

<plugin>
                <groupId>org.codehaus.tycho</groupId>
                <artifactId>maven-osgi-packaging-plugin</artifactId>
                <version>0.8.0</version>
                <configuration>
                <productConfigurationFile>toto.product</productConfigurationFile>
                    <environments>
                        <environment>
                            <os>linux</os>
                            <ws>gtk</ws>
                            <arch>x86</arch>
                        </environment>
                        <environment>
                            <os>win32</os>
                            <ws>win32</ws>
                            <arch>x86</arch>
                        </environment>
                        </environments>
                </configuration>
</plugin>

Remarque : Une best practice consiste à « variabiliser » le numéro de version de Tycho (0.8.0 ici) dans un propriété du pom.xml.

Un exemple de contruction d’un projet mutimodule avec tycho : http://code.google.com/p/dynaresume/source/checkout

Publicités

Créez un site Web ou un blog gratuitement sur WordPress.com.