2009-08-28 9 views
3

J'utilise Ant et mxmlc pour compiler des classes ActionScript et MXML en swfs, tout en conservant l'organisation par défaut d'un projet Flex Builder (Flash Builder). Beaucoup de mes classes ActionScript sont dans les sous-répertoires de projet, donc mon projet est organisé comme suit:Comment dériver un chemin relatif en utilisant Ant

MyBigProject 
-build-imports.xml 
-build.xml 

-bin-debug 
--src 
---flash 
---app 
----CoolWidget1.swf 
---Main.swf 
--test 

-src 
--flash 
---app 
----build-imports.xml 
----build.xml 
----CoolWidget1.as 
--build-imports.xml 
--build.xml 
--Main.mxml 
-test 

Cette structure de répertoire maintient la structure de répertoire par défaut d'un projet Flash Builder je peux effectuer bouton-poussoir construit à partir de Flash Builder IDE. J'ai ajouté les xml de construction d'Ant à ce projet ainsi je peux également construire à partir de la ligne de commande. J'essaie de créer des scripts de construction de fourmis portables qui nécessitent le moins de modifications pour être réutilisés dans d'autres projets. J'ai tout ce que je veux, sauf pour dériver des chemins relatifs.

Le fichier build-imports.xml à la racine du projet contient les éléments suivants:

<project name="project.root.imports"> 
    <dirname property="project.root.dir" file="${ant.file.project.root.imports}"/> 
</project> 

Alors que les sous-dossiers de projet contiennent build-imports.xml avec les éléments suivants:

<project name="MyBigProject.src.flash.app.imports"> 
    <import file="../build-imports.xml" /> 
</project> 

Notez que le sous-projet build-imports.xml parcourt le répertoire hiearchy jusqu'à ce qu'il atteigne la racine build-imports.xml, et là je mets le fichier project.root.dir.

Je peux ensuite utiliser $ {project.root.dir}/bin-debug pour spécifier où placer mes binaires. Le seul problème que j'ai, c'est que je ne sais pas comment créer la même structure de répertoire que ce qui se trouve sous mon dossier src. Je dois pouvoir dériver un chemin relatif ou effectuer une manipulation de chaîne pour créer de nouveaux répertoires.

Compte tenu des informations ci-dessus, comment puis-je prendre un chemin connu comme:
$ {} project.root.dir/src/app
et tire un chemin de répertoire comme:
$ {project.root.dir }/bin-debug/app

J'ai trouvé des informations sur la tâche Ant-contribu propertyregex, ce qui permettrait une manipulation de chaîne, mais j'espère qu'il existe un guru Ant qui peut pointer vers un simple Solution. Je crois que c'est très probable en tant que novice Ant, je suis simplement en train de négliger l'évidence.

Répondre

2

Mes fichiers de construction ont évolué un peu depuis que j'ai publié, mais j'ai résolu le problème. Je crois que le suivant serait correctement dans la configuration de base décrit précédemment:

Ajoutez ceci à la cible par défaut dans le build.xml du projet sous

<path id="build.path"> 
    <pathelement location="." /> 
</path> 
<pathconvert property="build.dir" refid="build.path"> 
    <map from="${project.root.dir}" to="${project.root.dir}/bin-debug"/> 
</pathconvert> 
+0

Notez que vous n'avez pas besoin de définir d'abord l'objet de chemin. Il devrait également inclure < path location = "." /> En tant qu'enfant à pathconvert au lieu de l'attribut refid. –

+0

Je ne sais pas ce qui ne va pas mais la pièce ci-dessus ne fonctionne pas selon l'aspectation de linux. Dans mon cas cela fonctionne pour Windows. Quelqu'un peut-il répondre sur le même? –

Questions connexes