2010-09-09 18 views
5

Ich suche ein Verzeichnis von einem Ort zum anderen zu kopieren. Nach dem Betrachten von "copy" und "copyDir" (was veraltet ist) scheint es, dass Ant standardmäßig nur den Inhalt eines Ortes in einen anderen kopiert, nicht das tatsächliche Verzeichnis (und alles darin).Wie kopiere ich ein Verzeichnis von einem Ort zu einem anderen mit Ant?

So, als Beispiel ich habe folgendes:

./Foo/test.txt 

Und ich wenden Sie das folgende Stück Ant:

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

Das Ergebnis sieht wie folgt aus:

./build/test.txt 

Wobei ich es gerne hätte:

./build/Foo/test.txt 

Hoffnung, die Sinn macht. Wie kann ich das machen?

Antwort

3

Um die Struktur beizubehalten, müssten Sie den übergeordneten Ordner kopieren. Im Befehl copy gibt es eine flattern-Option, die jedoch standardmäßig auf false festgelegt ist. Sie können auch die gewünschte Verzeichnisstruktur erstellen und dann auf Dateiebene direkt in Ihren neuen Ordner kopieren.

Hier ist die entsprechende Zeile aus dem reference:

Wenn ein <fileset> verwendet wird, um Dateien auszuwählen zu kopieren, das todir Attribut gesetzt werden. Dateien, die befindet sich unter dem Basisverzeichnis der < fileset sind > werden in ein Verzeichnis unter dem Ziel Verzeichnis kopiert werden passend zu den Pfad relativ zum Basis Verzeichnis des <fileset>, es sei denn, das Abflachen Attribut auf true gesetzt ist .

Das Problem liegt darin, dass Sie die Foo Ordner nach oben Kommissionierung sind, so dass Sie nur die Dateien, die es unter erhalten, müssen Sie den Ordner über Foo holen die fileset zu bekommen, wo die ~/Foo/Datei. TXT-Struktur existiert.

+0

Großer Dank dafür. – sjwb

+0

Hat mir geholfen, hier ist die +1 :) – jfklein

3

Was dazu:

<copy todir="./build"> 
    <fileset dir="."> 
    <include name="Foo/**"/> 
    </fileset> 
</copy> 
Verwandte Themen