2009-02-11 13 views
2

Compte tenu d'un ensemble de fichiersComment créer les répertoires spécifiés par un mappeur Ant

<fileset id="myFiles" dir="."> 
    <include name="**/*.file"/> 
</fileset> 

Comment puis-je créer un sous-répertoire à chaque fichier dans l'ensemble, du nom du nom de fichier sans l'extension?

Par exemple, étant donné les fichiers dossierA/X.file et dossierA/FolderB/Y.file, je veux créer les répertoires dossierA/X et dossierA/FolderB/Y

Répondre

1

Vous utiliserez pour tâche itérer sur votre liste de fichiers. Mais je n'ai rencontré aucun type d'utilitaire de sous-chaîne dans Ant que vous pouvez utiliser pour supprimer l'extension et créer le répertoire. Faites une recherche pour cet utilitaire, si ce n'est pas là, alors vous devez implémenter une tâche Ant pour le faire.

0

Désolé pour répondre à mes questions. A moins que quelqu'un ne sache le contraire, il semble qu'il n'y ait aucun moyen pour ANT out-of-the-box de créer des répertoires (par exemple en utilisant mkdir) par rapport aux entrées dans un ensemble de fichiers. Ant-Contrib contient des tâches utiles en boucle, comme le suggère Bhushan, qui pourraient éventuellement effectuer ce type de tâche. J'ai eu quelques meilleures choses à faire, donc à la fin, je viens d'écrire un fichier batch appelé par une tâche ANT (les tâches d'application peuvent parcourir les groupes de fichiers).

<apply executable="cmd" failonerror="1"> 
    <arg value="/c"/> 
    <arg line="build\tools\makeRelDir.bat"/> 
    <fileset dir="."> 
     <include name="**/*.file"/> 
    </fileset> 
</apply> 

où le fichier batch fait ceci: mkdir% ~ DP1% ~ n1

(Pourquoi est-il si difficile de faire quelque chose une simple ANT Est-ce que manque-je quelque chose?)

2

la tâche tactile fourmi prend en charge la création de fichiers, répertoires parents et mappage de noms de fichiers peut être utilisé pour y parvenir:

<target name="mkdirs"> 
    <touch mkdirs="true"> 
     <fileset dir="the_dir"/> 
     <mapper type="glob" from="*.file" to="the_dir/*/.tmp" /> 
    </touch> 
    <delete> 
     <fileset dir="the_dir" includes="**/.tmp"/> 
    </delete> 
    </target> 

cela crée des fichiers temporaires dans dirs cibles (création des dirs si le n'existe pas) supprime alors les fichiers temporaires en laissant les répertoires voulus.