Une petite astuce rapide qui pourrait vous faire gagner un peu de temps lors de la compilation de votre projet Flex grâce au plugin maven Flexmojos.
On part du principe que toute application non triviale Flex est composée d’un ensemble de modules (au sens maven).
Ces modules sont généralement de type SWC ou SWF.
En tant que bon développeur que vous êtes, vous lancez votre compilation/test maven en local avant chaque commit afin de vous assurer que vous n’allez pas casser le build et ainsi vous attirer des ennuis auprès de l’équipe technique ou encore perdre des points à votre jeu favori.
Dès lors que vous développez une application de taille moyenne/grande, vous vous retrouvez à la merci des performances du compilateur Flex (dont la nouvelle version se fait attendre depuis la nuit des temps), même si vous avez eu la bonne idée de découper votre application en modules Flex.
Lorsque vous lancez la compilation sur tout votre projet, les modules maven vont être compilés les uns après les autres, y compris si vous avez changé les sources que dans un seul projet.
La variable de configuration « quick » que l’on retrouve pour les projets de type SWC ou SWF, pourrait vous aider à accélérer cette compilation.
À propos de cette variable, la doc indique :
« Quick compile mode. When true, Flexmojos will check if the latest artifact available at maven repository for this project is newer then sources. If so, wont recompile. »
Le principe est tout simple : Si la date de l’artifact généré dans le repository maven est plus récente que la date de modification des sources, c’est que les sources n’ont pas été modifiées. Flexmojos va donc éviter de recompiler les SWC/SWF qui ne le nécéssitent pas… Pratique !
Pour utiliser le quick mode, il suffit de l’activer dans la configuration du goal choisi :
<plugin> <groupId>org.sonatype.flexmojos</groupId> <artifactId>flexmojos-maven-plugin</artifactId> <version>${flexmojos.version}</version> <configuration> <quick>true</quick> ... </configuration> </plugin>
Attention !
Il faut noter toutefois, que ce mode peut entraîner des effets de bord gênants :
- Si un module n’est pas compilé, les tests ne sont pas exécutés. Dans vos rapports de tests, vous allez donc voir baisser le nombre de tests exécutés ainsi que leur couverture de code!
- Il semble que le plugin ne gère pas les sources qui ne sont ni des .as ni des .mxml. Par exemple, des .properties ou .css à compiler. Ce qui signifie que vos locales ou feuilles de styles ne seront pas recompilées, même si elles ont changés.
Cette petite astuce sera donc à utiliser avec parcimonie


