2014-12-04 13 views
20

Ich benutze Gradle und möchte alle Dateien mit einer bestimmten Erweiterung löschen. Ist das etwas, was Gradle kann?Gradle - Dateien mit bestimmter Erweiterung löschen

+1

Gradle kann so ziemlich alles tun, was Sie in groovy Skript können. Die eigentliche Frage lautet also: "Gibt es eine Aufgabe ** **, die Dateien mit einer bestimmten Erweiterung löschen kann?" Wenn es nicht als eine Aufgabe geschrieben wird, dann erhalten Sie nicht den Vorteil von Gradle's Task Graph ('myBuild.dependsOn ('deleteFiles') ') und/oder inkrementellen Builds. – kevinmm

Antwort

34

Verwenden Sie die Gradle Delete Aufgabe.

task deleteFiles(type: Delete) { 
    delete fileTree('dir/foo') { 
     include '**/*.ext' 
    } 
} 
+1

Für mich hat es Folgendes getan: 'deletefileTree (dir: 'dir/foo', include: '**. Ext')' (Gradle 4.1, 2017) – lealceldeiro

+0

Wie kann ich eine externe Methode vom Typ delete deklarieren? d. h. ext.deleteFiles = {Typ: String löschen ... fileNames -> fileNames.each {Dateiname -> löschen $ fileName } } –

2

Es gibt mehrere Möglichkeiten, um Dateien mit bestimmten extension.In allgemeinen zu löschen, müssen Sie einige Dateien auswählen, dann einige von ihnen filtern und löschen schließlich file.For Beispiel versuchen, dies zu erinnern:

def tree = fileTree('${SOME_DIR}') 
tree.include '**/*.${SOME_EXT}' 
tree.each { it.delete() } 
+1

Beachten Sie, dass dies im Wesentlichen ein grooviger Code ist, der die Project.fileTree-API von Gradle verwendet. Der Code wird immer während der Konfigurationsphase eines Gradle-Builds ausgeführt, sofern er nicht in einem benutzerdefinierten Taskblock enthalten ist. – kevinmm

2

können Sie Standard clean Aufgabe anpassen, um andere Verzeichnisse und Dateien zum Löschen enthalten wie:

clean{ 
    delete 'buildDir', 'generated' 
} 

Wenn Sie glob möchten, können Sie fileTree zum Beispiel, oder irgendwelche anderen geeigneten Methoden zur Liste Dateien:

clean{ 
    delete 'build', 'target', fileTree(dockerBuildDir) { include '**/*.rpm' } 
} 
Verwandte Themen