Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

6août/081

Création d'Applications Flex – Compiler en utilisant Ant

Utiliser le compilateur en ligne de commande n'est pas la meilleure manière de construire des applications Flex, pour plusieurs raisons:

  • Ce n'est pas pratique car vous avez besoin d'ouvrir un invite de commande et taper les commandes à chaque fois
  • Puisque vous devez tapez les commandes à chaque fois, vous avez plus de chances de faire des erreurs
  • En plus de ne pas être pratique, ouvrir un invite et taper ses commandes est lent.
  • Compiler en ligne de commande n'offre pas toutes les fonctionnalités dont vous avez peut-être besoin, comme la copie et le déploiement de fichiers, le test de dépendances, etc…

Il existe un outil standard utilisé par les développeurs d'applications pour scripter ces "builds" appelé Apache Ant. Ant (http://ant.apache.org) est un outil open source en Java qui automatise la procédure de build. Cela comprend le test de dépendances (par ex. l'existence des répertoires), la compilation, la copie/déplacement de fichiers et la lancement d'applications. Bien que vous puissiez utiliser des fichiers .bat ou des scripts shell pour accomplir la plupart des tâches basiques d'Ant, Ant est extrêmement riche en fonctionnalités (support de la compression/décompression d'archive, support des emails, du FTP, etc…) et permet un meilleur traitement des erreurs potentielles.

Si vous n'êtes pas familier avec Ant, la première chose que vous devez faire est de télécharger et d'installer Ant (http://ant.apache.org). Une fois que vous installé Ant, vous devez ajouter une nouvelle variable d'environnement, appelée ANT_HOME, ainsi que que le dossier "bin" de Ant au PATH. La variable d'environnement ANT_HOME devrait pointer vers le répertoire racine de l'installation d'Ant sur votre ordinateur. Par exemple, si Ant est installé dans C:\Ant sur un système Windows, la variable d'environnement ANT_HOME devra pointer vers C:\Ant. En plus, vous devez ajouter le répertoire "bin" d'Ant au system PATH. Par exemple, si Ant a été installé sous C:\Ant, vous devez ajouter C:\Ant\bin au PATH.
Ant utilise des fichiers XML appelés build.xml. Le fichier build.xml contient toutes les instructions qui vont permettre à Ant de savoir comment compiler et déployer tous les fichiers nécessaires. Le fichier build.xml consiste en un noeud <project> contenant tous les nœuds cibles (<target>).
Le nœud project permet de définir trois attributs:

  • name: Le nom du projet
  • default: Le nom du target à lancer quand aucun target n'est spécifié
  • basedir: Le répertoire à utiliser comme répertoire de référence

Pour un build.xml simple, le nœud <project> devra ressembler à celui-ci:

<project name="FlexTest" default="compile" basedir="./">
</project>

Cela signifie que le répertoire de référence est le répertoire dans lequel se trouve build.xml et que la cible par défaut est "target".
A l'intérieur d'un nœud <project>, on peut trouver un ou plusieurs nœuds <target>. Chaque nœud target représente un ensemble de tâches repérées par un nom. Une tâche Ant peut être une compilation d'une application, un déplacement de fichiers, la création d'un répertoire, le lancement d'une application, la création d'une archive ZIP, l'utilisation de commandes FTP, etc… Vous pouvez en apprendre plus sur ces tâches Ant en consultant http://ant.apache.org/manual/tasksoverview.html. Ici, on va se concentrer sur certaines des tâches Ant, comme exec ou move.
Le code suivant définit un target "compile" pour notre fichier build.xml de test:

<project name="FlexTest" default="compile" basedir="./">
	<target name="compile">
		<exec executable="C:\FlexSDK\bin\mxmlc.exe">
			<arg line="-file-specs FlexTest.mxml"/>
		</exec>
	</target>
</project>

Le target "compile" est lancé par défaut car c'est celui qu'on a précisé dans le noeud <project>. Quand vous allez lancer le build Ant, le target "compile" va lancer la tâche exec avec l'exécutable C:\FlexSDK\bin\mxmlc.exe (à changer suivant votre configuration). A l'intérieur de ce tag <exec>, vous pouvez placer un ou plusieurs tags <arg> qui vous permettent d'ajouter des arguments à la commande. Dans l'exemple précédent, on ajoute simplement l'option -file-specs à l'appel du compilateur.
A l'intérieur dun document build.xml, vous pouvez aussi utiliser des éléments <property> pour définir des variables que vous pourrez utiliser dans votre document. Une fois que vous avez défini une propriété, vous pouvez y faire référence en utilisant ${property}, ou "property" est le nom de la propriété.
Dans cet exemple de build.xml, on définit quelques propriétés puis on les utilise pour indiquer les chemins. Cet exemple ajoute aussi une option "output", qui envoie le fichier vers un chemin spécifié:

 <project name="FlexTest" default="compile" basedir="./">

	<property name="deployDirectory" value="C:\FlexProjects\FlexTest\bin"/>
	<property name="compiler" value="C:\FlexSDK\bin\mxmlc.exe"/>

	<target name="compile">
		<exec executable="${compiler}">
			<arg line="-file-specs FlexTest.mxml"/>
			<arg line="-output='${deployDirectory}\application.swf'"/>
		</exec>
	</target>
</project>

Les <target> peuvent avoir des dépendances. Cela permet l'écriture de plusieurs target que vous pouvez enchaîner. C'est utile quand vous avez plusieurs groupes de tâches, dont certaines que vous voulez lancer indépendamment ou ensemble. Vous pouvez créer des dépendances en utilisant l'attribut "depends" pour un noeud <target>. La valeur de "depends" est le nom du target qui doit être lancé avant le target courant.
L'exemple suivant fait un build de deux fichiers appelés "initialize" et "run". Le target "initialize" lance un tâche mkdir pour être sur que le répertoire de déploiement existe. La tâche "run" dans cet exemple, lance un navigateur Web (Firefox) en lui passant l'url de l'application déployée. Cette version de build.xml donne le target "run" par défaut, et utilise des dépendances pour s'assurer que quand le target "run" est exécuté, on a d'abord appelé le target "compile" qui, à son tour, appele le target "initialize". Au final, le target "run" s'assure que le répertoire de déploiement existe, compile l'application puis la lance dans un navigateur web.

<project name="FlexTest" default="run" basedir="./">

	<property name="deployDirectory" value="C:\FlexProjects\FlexTest\bin"/>
	<property name="compiler" value="C:\FlexSDK\bin\mxmlc.exe"/>
	<property name="testApplication" value="C:\Program Files\Mozilla Firefox\Firefox.exe"/>

	<target name="initialize">
		<mkdir dir="${deployDirectory}"/>
	</target>	

	<target name="compile" depends="initialize">
		<exec executable="${compiler}">
			<arg line="-file-specs FlexTest.mxml"/>
			<arg line="-output='${deployDirectory}\application.swf'"/>
		</exec>
	</target>

	<target name="run" depends="compile">
		<exec executable="${testApplication}" spawn="yes">
			<arg line="http://localhost/FlexProjects/FlexTest/bin/application.swf"/>
		</exec>
	</target>

</project>

Une fois que vous avez un fichier build.xml valide, vous pouvez le lancer en ligne de commande en lançant simplement ant depuis le même répertoire que le fichier cible:

ant

Cela lance le target par défaut du fichier build.xml situé dans le même répertoire. Pour lancer un target qui n'est pas par défaut, vous pouvez spécifier un nom de target après la commande. Pour en lancer plusieurs, spécifiez chaque target dans une liste, séparée par des espaces:

ant target1 target2

Ant s'intègre avec la plupart des IDE, dont Eclipse, PrimalScript, FlashDevelop et jEdit. Pour en savoir plus sur l'intégration d'Ant avec votre IDE, consultez http://ant.apache.org/manual/ide.html.

Remplis sous: Exemple || Taggé comme: , , , Laisser un commentaire

Articles similaires

Commentaires (1) Trackbacks (0)
  1. Bonjour,
    Joli tuto :) mais je reste néanmoins mitigé quant aux trois premières raisons :
    - Ouverture d'une console : instantanée avec un raccourcis clavier (avec guake terminal par exemple)
    - Utilisation d'un makefile :

    SRC = src
    INPUT = $(SRC)/Bootstrap.mxml
    OUTPUT = bin/projet.swf
    CONFIG = config/configuration.xml
    ASSRC = $(wildcard src/*.as)
    MSRC = $(wildcard src/*.mxml)

    $(OUTPUT):$(ASSRC) $(MSRC) $(CONFIG)
    mxmlc -load-config+=$(CONFIG) -default-background-color=0x859BA6 -file-specs $(INPUT) -output $(OUTPUT)


Leave a comment

(required)

Aucun trackbacks pour l'instant