Un build maven pour une application Eclipse Scout

Depuis un plus d’un an, la plateforme Eclipse a repensé son mécanisme de build: l’outil de build maison PDE est officiellement remplacé par Maven. Pour permettre à Maven d’interpréter les objets eclipse (target platform, MANIFEST.MF, fichier product…) un plugin maven a été développé. C’est Tycho.

Tycho se situe entre Maven et les technologies Eclipse (PDE, P2). Il fait la jonction entre les deux mondes. Le travail n’est pas simple, car certains mécanismes existent dans les deux mondes : les dépendances par exemple sont déclarées dans les pom.xml dans le monde maven et dans le MANIFEST.MF dans le monde Eclipse. Il s’agit donc d’unifier tout cela en permettant à maven de comprendre le monde Eclipse.

tycho

Toute application reposant sur la plateforme Eclipse peut maintenant être compilée avec Maven. C’est le cas de ma petite application de QCM mcqs. C’est une application Eclipse Scout, elle repose donc également sur la plateforme Eclipse.

Suivant ce tutoriel, j’ai converti mes plugins en module maven. Il a également fallu déplacer certains fichiers, notamment les fichiers *.product qui doivent être placé à la racine du module maven. J’ai également dû ajouter une target platforme pour indiquer à maven où trouver les dépendances. En effet souvent, les développeurs utilisant eclipse reprennent simplement les plugins présents dans l’IDE pour l’application qu’ils développent. Ceci ne fonctionne pas avec tycho (par définition il n’y a pas de IDE au moment de la compilation). Enfin pour le serveur, les applications Eclipse Scout reposent sur l’approche servlet bridge Equinox. Le war nécessite quelques fichiers supplémentaires (dont un jar, que je devrais dans un monde parfait également télécharger avec maven).

Un petit mvn clean install :

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] mcqs - master ..................................... SUCCESS [0.184s]
[INFO] mcqs - aggregator ................................. SUCCESS [0.005s]
[INFO] mcqs - shared ..................................... SUCCESS [11.849s]
[INFO] mcqs - client ..................................... SUCCESS [2.852s]
[INFO] mcqs - client.mobile .............................. SUCCESS [1.313s]
[INFO] mcqs - server ..................................... SUCCESS [1.021s]
[INFO] mcqs - server.nodb.frament ........................ SUCCESS [0.914s]
[INFO] mcqs - server.product ............................. SUCCESS [25.572s]
[INFO] mcqs - target platform ............................ SUCCESS [0.093s]
[INFO] mcqs - ui.rap ..................................... SUCCESS [0.704s]
[INFO] mcqs - ui.rap.product ............................. SUCCESS [17.446s]
[INFO] mcqs - ui.swing ................................... SUCCESS [0.798s]
[INFO] mcqs - ui.swing.product ........................... SUCCESS [9.226s]
[INFO] mcqs - ui.swt ..................................... SUCCESS [1.299s]
[INFO] mcqs - ui.swt.product ............................. SUCCESS [16.733s]
[INFO] mcqs - root ....................................... SUCCESS [0.161s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3:59.433s
[INFO] Finished at: Sun Aug 25 14:04:31 CEST 2013
[INFO] Final Memory: 32M/81M
[INFO] ------------------------------------------------------------------------

Et c’est tout bon.

Prochaine étape : repenser la création base de données. Le tutoriel du livre Eclipse Scout propose une approche intéressante. Lorsque la base n’existe pas, elle est créée.

Image tirée de la présentation Building Eclipse Plug-Ins and RCP Applications with Tycho, slide 5 – Related Technologies, diffusée sous licence libre EPL v1.0 (Copyright (c) 2013 SAP AG and others)

Laisser un commentaire