2010-09-09 4 views
5

Je cherche à copier un répertoire d'un endroit à un autre. Cependant, après avoir regardé "copy" et "copyDir" (qui est obsolète) il semble que Ant, par défaut, copie seulement le contenu d'un emplacement à un autre, pas le répertoire réel (et tout ce qu'il contient).Comment copier un répertoire d'un emplacement à un autre en utilisant Ant?

Ainsi, à titre d'exemple que je donne les résultats suivants:

./Foo/test.txt 

Et j'applique la pièce suivante de Ant:

<copy todir="./build"> 
    <fileset dir="./Foo"/> 
</copy> 

Le résultat ressemble à ceci:

./build/test.txt 

Attendu que je voudrais que ce soit:

./build/Foo/test.txt 

Espérons que cela a du sens. Comment puis je faire ça?

Répondre

3

Pour préserver la structure, vous devez copier le dossier parent. Il y a une option d'aplatissement dans la commande de copie, mais par défaut elle est fausse. Vous pouvez également créer la structure de répertoire que vous voulez, puis copier au niveau du fichier directement dans votre nouveau dossier.

Voici la ligne correspondante de la reference:

Lorsqu'un <fileset> est utilisé pour sélectionner les fichiers à copier, l'attribut TODIR doit être réglé. Les fichiers qui sont situés dans le répertoire de base du <fileset> seront copiés dans un répertoire sous la destination répertoire correspondant à la trajectoire par rapport à la base répertoire du <fileset>, à moins que l'aplatir attribut est défini sur true .

Le problème réside dans ce que vous ramassez le dossier Foo, de sorte que vous obtenez seulement les fichiers sous, vous devez choisir le dossier ci-dessus Foo pour obtenir l'ensemble de fichiers où le ~/Foo/fichier. La structure de txt existe.

+0

Grand, merci pour cela. – sjwb

+0

m'a aidé, voici le +1 :) – jfklein

3

Qu'en est-ce:

<copy todir="./build"> 
    <fileset dir="."> 
    <include name="Foo/**"/> 
    </fileset> 
</copy> 
Questions connexes