Avertissement pr??alable : ce message concerne un sujet technique, si vous ??tes l?? pour la d??conne ... ben c'est pas pour vous.

Supposons que vous soyez moi. Ou vous dit que vous devez (enfin, vous imaginez plut??t qu'on vous a dit ??a) trouver une solution pour compiler tous vos jolis projets Flex avec maven. Pour ??a, ??videment, vous savez qu'il existe flexmojos. Et pendant un moment, tout va bien. Vous arrivez ?? compiler vos SWC et SWF sans trop de probl??mes (si on met de c??t?? les num??ros de version louches, l'absence de certains artefacts - d'une utilit?? discutable, cela dit -, la gestion "d??licate" des th??mes - cherchez pas, c'est pas la m??thode que j'utilise -, ou encore la gestion des include dans le code). Mais, ?? un moment, vous allez tomber sur du code "compatible" Flex/AIR. Et l??, c'est vraiment pas gagn??. Parce que la m??thode "canonique" pour ??crire du code Flex pour les applets ou les applications, c'est d'utiliser l'??quivalent Flex des macros C :

https://gist.github.com/964393

Pas vraiment beau, et surtout pas facile de faire rentrer ??a dans la logique Maven qui dit "un projet, un artefact". parce que l??, le but, c'est avec un seul projet de produire deux artefacts : un SWF pour AIR et un SWF pour Flex.

Heureusement, en fouillant un peu, j'ai trouv?? un d??but de solution : les classifieurs. Bien s??r, j'aurais pu utiliser les profiles, mais ils sont, d'apr??s ce que j'ai compris, exclusifs. Il fallait cependant que j'adapte ??a ?? mon probl??me. Pas forc??ment facile. N??anmoins, flexmojos fournit les param??tres de configuration permettant de d??finir les propri??t??s conditionnelles. Du coup, le fragment de POM suivant permet de produire un SWF ayant le classifieur "flex" et un autre ayant le classifieur "air" :

https://gist.github.com/964401

Bon, ??videment, comme mon artefact utilise un POM parent (pour d??finir tout le bordel des d??pendances flex), j'ai d?? enlever la compilation swc par d??faut, c'est pour ??a que (gr??ce ?? cet article) j'ai r??associ?? l'ex??cution default-compile-swc ?? la phase none.

Et dire que ces histoires n'en sont qu'?? leur commencement ...