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

6août/089

Création d'Applications Flex – Conserver les paramètres de compilation dans des fichiers de configuration

Bien qu'il soit très marrant de spécifier les options du compilateur en ligne de commande, vous pouvez aussi les conserver dans un fichier de configuration XML. Vous pouvez ensuite spécifier le fichier de configuration en une seule option dans la ligne de commande. L'option "load-config" permet de spécifier le fichier que vous voulez charger afin d'être utilisé comme fichier de configuration.

mxmlc -load-config=configuration.xml SampleApplication.mxml

Par défaut, mxmlc utilise un fichier de configuration appelé flex-config.xml dans le dossier "frameworks" du SDK ou de l'installation de Flex Builder. Si vous spécifiez une valeur pour l'option load-config, elle va remplacer le flex-config.xml. La plupart des paramètres de flex-config.xml sont requis.

Cela veut dire qu'il est important que vous fassiez un choix entre les deux solution suivantes:

  •  Copiez et modifiez le contenu de flex-config.xml avec vos valeurs personnalisées. Quand vous le faîtes de cette manière, vous devrez modifier plusieurs valeurs dans le fichier pour qu'elle pointent vers de chemins absolus plutôt que des chemins relatifs. En particulieur, vous devrez modifier:
    • Le paramètre <external-library-path> depuis le chemin relatif "libs/playerglobal.swc" vers un chemain valide vers le fichier SWC
    • Le paramètre <library-path> depuis "libs" et "locale/{locale}" vers un chemin valide vers ces ressources (vous pouvez garder la variable {locale})
  • Charger votre fichier de configuration en addition de celui par défaut. Quand vous utilisez l'opérateur = pour assigner une valeur à l'option "load-config", vous chargez le fichier spécifié à la place de l'autre. Quand vous utilisez l'opérateur +=, vous chargez le fichier en addition de celui par défaut. Toutes les valeurs spécifiées dans la configuration personalisée vous écraser les paramètres correspondant dans le fichier par défaut.

mxmlc -load-config+=configuration.xml SampleApplication.mxml

Les fichiers de configuration doivent avoir un seul noeud racine, et ce noeud racine doit être le tag <flex-config>. Le tag <flex-config> doit définir un namespace comme dans l'exemple suivant:

<flex-config xmlns="http://www.adobe.com/2006/flex-config">
</flex-config>

A l'interieur de ce noeud racine, vous pouvez insérer des noeuds correspondant aux options du compilateur. Vous pouvez configurer n'importe laquelle des options dans le configuration file. Cependant, les noeuds d'option doivent apparaître en ayant la bonne hiérarchie. Par exemple, certains noeuds options doivent apparaître dans un tag <compiler>, et d'autres doivent apparaître dans un tag <metadata>. Vous pouvez déterminer la hiérarchie correcte depuis l'aide du compilateur.
La liste suivante est celle retournée par mxmlc -help list:

-benchmark
-compiler.accessible
-compiler.actionscript-file-encoding <string>
-compiler.context-root <context-path>
-compiler.debug
-compiler.external-library-path [path-element] [...]
-compiler.fonts.max-glyphs-per-face <string>
-compiler.include-libraries [library] [...]
-compiler.incremental
-compiler.library-path [path-element] [...]
-compiler.locale <string>
-compiler.namespaces.namespace <uri> <manifest>
-compiler.optimize
-compiler.profile
-compiler.services <filename>
-compiler.show-actionscript-warnings
-compiler.show-binding-warnings
-compiler.show-depreciation-warnings
-compiler.source-path [path-element] [...]
-compiler.strict
-compiler.theme [filename] [...]
-compiler.use-resource-bundle-metadata
-file-specs [path-element] [...]
-help [keyword] [...]
-licenses.license <product> <serial-number>
-load-config <filename>
-metadata.contributor <name>
-metadata.creator <name>
-metadata.date <text>
-metadata.description <text>
-metadata.language <code>
-metadata.localized-desciption <text> <lang>
-metadata.localized-title <title> <lang>
-metadata.publisher <name>
-metadata.title <text>
-output <filename>
-runtime-shared-libraries [url] [...]
-use-network
-version
-warnings

Vous allez que certaines options que vous connaissez déjà comme "incremental" ou "title" sont préfixées (par ex. compiler.incremental et metadata.title). Ces commandes préfixées sont les vraies commandes. Le compilateur définit des alias que vous pouvez utiliser en ligne de commande. De cette manière, le compilateur sait que quant vous tapez incremental, vous voulez dire compiler.incremental. Cependant, quand vous utilisez un fichier de configuration, vous devez utiliser les noms complets. Les préfixes sont en fait les neouds parent. Par exemple, le XML suivant fixe l'option incremental à true et l'option title à Exemple:

 <flex-config xmlns="http://www.adobe.com/2006/flex-config">
	<compiler>
		<incremental>true</incremental>
	</compiler>
	<metadata>
		<title>Exemple</title>
	</metadata>
</flex-config>

Dans la liste des options, vous remarquerez que certaines sont suivies par une valeur entourée par <>. Par exemple, l'option title est suivie par <text>. Ces valeurs indiquent que la valeur de l'option doit être une String. Par exemple, comme vous pouvez le voir dans le code précédent, le tag <title> à une valeur de type String de valeur "Exemple". Si une option est suivie par deux ou plusieurs valeur <value>, le noeud de l'option devra contenir des neouds enfants avec les noms spécifiés.
Par exemple, l'option "localized-title" est suivie par <text> <lang>. Et voici un exemple de fichier de config qui décrit correctement l'option localized-title:

 <flex-config xmlns="http://www.adobe.com/2006/flex-config">
	<metadata>
		<localized-title>
			<text>Example</text>
			<lang>en_US</lang>
		</localized-title>
	</metadata>
</flex-config>

Si une option est suivie par [value] [...], cela veut dire que le noeud option doit contenit une ou plusieurs tags avec les noms spécifiés. Par exemple, file-specs est suivi par [path-element] [...]. Cela veut dire que le fichier de configuration suivant est valide:

 <flex-config xmlns="http://www.adobe.com/2006/flex-config">
	<file-specs>
		<path-element>Exemple.mxml</path-element>
	</file-specs>
</flex-config>

Le code suivant est aussi valide. Il définit plusieurs fichiers cible à compiler

 <flex-config xmlns="http://www.adobe.com/2006/flex-config">
	<file-specs>
		<path-element>Exemple.mxml</path-element>
		<path-element>Exemple2.mxml</path-element>
		<path-element>Exemple3.mxml</path-element>
		<path-element>Exemple4.mxml</path-element>
	</file-specs>
</flex-config>

Quand une action n'est pas suivie par un élément, cela indique que la valeur doit être un Booléen (true ou false). Par exemple, "incremental" n'est pas suivie par quelque chose.
Si vous voulez que le compilateur liste toutes les options, utilisez la commande:

mxmlc -help advanced

Articles similaires

Commentaires (9) Trackbacks (1)
  1. Hello :)

    Très bon tutoriaux ! Merci :)

  2. est il possible de utiliser un autre langage que xml pour créer un fichier config?

    merci?

  3. Bonjour,

    les fichiers de config sont XML, il n'est pas possible de le faire dans un autre langage

    fabien

  4. Tous ces tutoriaux sont excellents!

  5. Bonjour,
    je voudrais configurer un fichier de conf pour mxmlc de sorte que le fichier de sortie soit dans un autre répertoire que le répertoire courant !
    voici mon fichier de conf:

    MXML:
    1. <flex-config xmlns="http://www.adobe.com/2006/flex-config">
    2.     <compiler>
    3.         <incremental>true</incremental>
    4.     </compiler>
    5.     <metadata>
    6.         <title>Mon musée des horreurs</title>
    7.         <creator>Papa Issa DIAKHATE</creator>
    8.         <publisher>Papa Issa DIAKHATE</publisher>a
    9.         <!--<language>FR</language>-->
    10.     </metadata>
    11.     <!--<output>lol.swf</output>-->
    12. </flex-config>

    Mais la ligne de *** bloque tout lors de la compilation, voici la commande que j'ai lancé:
    mxmlc -load-config+=conf.xml fichier.mxml

    Et voici l'erreur
    FLEX/src/mxmlConf.xml(11): Erreur: donn?es CDATA inattendues

  6. Salut,
    il y a un "a" qui traine après ta balise publisher ;)

    Fabien

  7. Oups désolé pour l'idiote erreur d'inattention ^_^
    Par ailleurs, je voulais juste savoir comment mettre les fichiers *.swf dans ../bin/ en conservant le nom du fichier original source !
    voici ce qu'il y'a dans mon fichier de config pour mxmlc

    MXML:
    1. ../bin/

    Si je fais ceci par exemple, ça marche !

    MXML:
    1. ../bin/sortie.swf

    mais le problème est que ce fichier de sortie a un nom forcé
    y'aurait-il un moyen de mettre tout fichier *.swf dans un repertoire spécifique ?
    Merci d'avance

  8. Salut,
    je ne pense pas, ce n'est pas vraiment le boulot du compilateur de faire cela (si j'ai bien compris ta question). A mon avis, une tâche Ant te conviendrait mieux

    Fabien

  9. ok merci beaucoup, je vais apprendre à compiler avec ant alors ;)
    Encore merci :)


Leave a comment

(required)