2013-03-25 10 views
6

unter dem src-Ordner habe ich die folgenden Ordner: daos, Wirtschaft und Modell, möchte ich mit Ant-Skript löschen, alle Ordner außer „Modell“, so habe ich versucht:löschen Ordner mit einer Ausnahme

<delete includeemptydirs="true"> 
    <fileset dir="${basedir}/src"> 
    <include name="**/*"/> 
    <exclude name="model/*"/> 
    </fileset> 
    </delete> 

Alle Ordner werden excpet "Modell" gelöscht, die leer ist !! Alle seine Dateien sind gelöscht!

+0

Ich habe das getestet und es funktioniert. Wie ich dich verstehe, willst du alle Ordner außer Modell mit seinen Dateien löschen? – pepuch

+0

ja, das ist was ich will – junior

Antwort

8

Versuchen Sie stattdessen

<delete includeemptydirs="true"> 
    <fileset dir="${basedir}/src"> 
     <include name="**/*"/> 
     <exclude name="**/model/**"/> 
    </fileset> 
</delete> 
+0

thx, ich werde es versuchen :) – junior

+0

Es macht eine unnötige rekursive Teilbaumsuche, die lange dauern kann und nutzlos ist. – peterh

6

Um die Googler der Zukunft:

Was für mich gearbeitet:

<fileset dir="target"> 
    <include name="*/"/> 
    <exclude name="big_and_complex_dir/"/> 
</fileset> 

Dies alles gelöscht (alle Dateien und Verzeichnisse) unter target/, außer target/big_and_complex_dir.

Mein beabsichtigtes Ziel war es, die unnötige Verzeichnis Walkthrough, die im Falle der "big_and_complex_dir" dauerte sehr lange Zeit zu vermeiden.

Es scheint, dass die Dateigruppeninterpretation von ant das nicht-triviale, nicht-intuitive Verhalten hat, dass wir einen Include-/Exclude-Pfad mit / schließen müssen, wenn wir auch rekursive Unterverzeichnisoperationen durchführen wollen.