Maven 2 - Flex 2 - une synergie possible ?


A l’heure où maven 2 s’impose peu à peu comme standard de gestion du packaging et du déploiement des projets Java, il devenait clair que ce succès allait approcher le monde Flex, du fait de la courante association de ces deux technologies. Cet article tente de faire un tour de la situation actuelle en rappelant sommairement le fonctionnement et l’intérêt de maven 2 dans le cadre du développement de projets Java et en synthétisant les fonctions offertes par le plugin développé par l’équipe de ServeBox dans le cadre du framework Java / Flex ServeBox Foundry.

De l’intérêt de Maven 2

Kézako

Maven 2 est un (puissant) outil open source créé pour gérer la « périphérie technique » d’un projet java : de sa description (version, dépendances) à son déploiement en passant par l’ensemble des étapes standard (compilation, tests unitaires, construction, installation, etc. …) Je ne rentrerai pas trop dans le détail, vous invitant à consulter l’article très détaillé sur maven 2 depuis le site développez.com. L’élément à bien retenir ici est le fichier de description de votre projet : le pom.xml. C’est dans ce fichier que l’ensemble des déclarations sera fait. Pour lancer maven, il vous suffit d’appeler un « but » (ou goal en anglais). Le lancer via maven consiste à dire que vous souhaitez atteindre ce but (cet objectif). Par exemple, la commande mvn compile indique que vous souhaitez compiler votre projet.

Les dépendances

L’un des éléments à retenir consiste en la gestion des dépendances d’un projet proposée avec une gestion de la résolution des dépendances induites : concrètement, il suffit d’indiquer que votre projet compte la librairie struts en version 1.3.0 dans ses dépendances, et maven ajoutera automatiquement les autres librairies nécessaires au bon fonctionnement de struts, gérant au passage tout conflit potentiel avec d’autres dépendances. Pour les Linuxiens, ce système est tout à fait similaire au fonctionnement de APT (Debian, Ubuntu) ou YUM (Red Hat, Fedora). La communauté Maven 2 maintient donc un repository public qui référence l’ensemble des librairies disponibles à l’ajout. Lors d’une compilation, l’outil rapatrie localement les JAR et les place dans un répertoire structuré de la même manière que ce repository distant, vous permettant – ce point est essentiel – d’ajouter vos propres librairies.

Les plugins

Pour rester extensible (c’est dans l’ère du temps), maven 2 gère des plugins. On compte notamment parmi eux le plugin « eclipse » générant les fichiers .classpath et .project utilisé par l’IDE au moment de la compilation. Une partie dédiée au WTP est également en place pour gérer le déploiement d’une webapp sur le serveur applicatif déclaré via ce dernier. Maven dispose d’un « repository de plugins » (URL Internet) dans lequel il va aller chercher toute déclaration de plugin faite dans votre fichier pom.xml. Par exemple, si vous déclarez l’utilisation du plugin WTP (section <build>), maven va télécharger le plugin en question et l’appliquera à votre projet.

Conclusion

A partir de ces différents constats, il devient intéressant de gérer l’ensemble du processus de déploiement d’un projet à l’aide de maven 2, pour éviter d’utiliser trop d’outils différents concernant les tâches connexes à vos développements.

Quand Flex rentre en action

Pourquoi maven 2 pour Flex ?

Maven va donc compiler la partie Java, lancer d’éventuels tests unitaires, mais dans un projet Flex, il faudra au préalable que les .as et .mxml aient été compilés et inclus dans les bons répertoires du projet. Mais qu’en est-il si l’on gère plusieurs projets et qu’ils ont en commun des libraires SWC de composants? Pas très pratique de copier les fichiers directement en tant que ressource et risquer des erreurs de copies ou de mises à niveau lors de changements de version. Heureusement, vous n’êtes pas le seul à vous être posé la question…

Le plugin Maven 2 - Flex 2

L’équipe de ServeBox propose un plugin Maven gérant la compilation et le déploiement d’applications et de librairies Flex (par le biais d’un SDK installé localement). Tous les détails sur ce plugin figurent à l’adresse suivante : Plugin Flex 2 pour maven sur ServeBox. Pour reprendre succinctement les travaux effectués à l’heure actuelle, vous devez, en plus d’installer maven 2 :

  • installer les artifacts (librairies) SWC du framework Flex dans votre repository local,
  • pour chaque projet :
    • déclarer le type de « packaging » de votre projet (SWF pour une application et SWC pour une librairie Flex),
    • déclarer le chemin vers le plugin de ServeBox (dans le repository de plugins) afin que le type de packaging SWF ou SWC soit reconnu, ainsi que les buts (goal) comme flex2:makeswc.

On peut donc tout à fait imaginer que vous installiez dans votre repository local des librairies comme flex-lib ou encore vos propres librairies (un framework local ou que sais-je encore), pour les utiliser comme dépendance de votre projet (au même titre qu’une dépendance Java). Un mot pose pourtant encore problème dans cette conclusion : « local ». Eh oui, vous êtes sur votre machine et ne partagez pas votre installation avec votre entourage.

Comment ajouter des librairies dans un repository partagé par un groupe de travail ?

Le problème se posait déjà dans le monde Java : il n’est pas rare qu’un projet dépende de librairies n’appartenant pas au monde libre (oracle, …) et le système (très appréciable) de gestion de dépendances de maven 2 à tendance à donner des idées pour mutualiser les développements. Une réponse existe sous le nom de Proximity. Comme vous le verrez peut-être en suivant ce lien, Proximity est un proxy pour maven. En répliquant les dépendances demandées lors d’une exécution de maven, son intérêt est multiple :

  • réduire les temps de rapatriement de manière générale,
  • répondre en cas d’indisponibilités ponctuelles du repository public de maven 2,
  • ajouter des librairies dans des repository personnalisés fonctionnant comme le repository public de maven 2.

Selon votre organisation, vous pouvez tout à fait installer une instance de proximity pour y créer un repository personnalisé, et ainsi mutualiser vos propres librairies.

J’espère que cette approche générale sur le sujet vous donnera l’envie d’aller un peu plus loin. La prochaine fois, j’entrerai sur un cas pratique d’une application Flex développée sous eclipse WTP à l’aide de maven 2.

A bientôt !


Tags: ,


6 commentaires ...

» RSS des commentaires
  1. erick /
    -->

    ouaich l’nrv,
    welcome back !!! et justement …d’où vient tu en fait??… et qu’est ce que çà veut dire tout çà ? cela reste quand même un peu un mystère pour moi… mais merci bien pour cet article… il rappelle que la route du padawan est looooongue ! May da’force be with U ! C’Ya

  2. Hervé /
    -->

    hey,
    l’hyper-espace est grand, mon fils.
    Attends un peu l’exemple, ça parle plus en général… En revanche, c’est un tout petit peu plus long à rédiger qu’une bonne discussion de geek.

  3. BORDIER Cyrille /
    -->

    Bonjour,
    J’utilise actuellement FlexLib pour Flex2.
    Or, on a décidé de passer à Flex3. Avez-vous déjà porté FlexLib pour Flex3 ?
    D’avance merci,
    Cyrille BORDIER.

  4. Hervé /
    -->

    Bonjour Cyrille,
    A priori j’ai eu l’occasion de l’utiliser en l’état sous Flex 3, mais en n’utilisant que quelques composants. Je n’ai pas eu de soucis.
    Je suppose que tu peux ajouter la flexlib dans ton repository local en l’état, sans problème.

  5. Nicolas Martignole /
    -->

    Je vous conseille de jeter un oeil sur ce projet tout prêt basé sur maven qui vous permet d’avoir maven2, flex mais aussi un serveur BLazeDS pret à fonctionner
    blogs.adobe.com/francoisl…

  6. S.Didier /
    -->

    Bonjour,

    j’en profite pour vous annoncer que depuis le 1er décembre, ServeBox.org regroupe les projets Maven Flex Plugin et ActionScript Foundry. AS Foundry a été conçu en 2005 puis proposé à la communauté open source en 2007. Outre les correctifs des versions précédentes, la version 2.0 apporte de nombreuses nouvelles fonctionnalités.

    Maven Flex Plugin offre la possibilité aux développeurs d’utiliser Maven 2.0 pour le développement d’applications complexes Flex. De la compilation aux tests unitaires en passant par la génération de la documentation ASDoc, l’ensemble des étapes de développement sont disponibles avec Maven.

    Maven Flex Plugin : http://www.servebox.org/maven-flex-plugin/
    ActionScript Foundry : http://www.servebox.org/actionscript-foundry/

    L’équipe ServeBox.org


Soit pas timide...

Powered by WP Hashcash