2014-12-04 15 views
20

Używam programu Gradle i chcę usunąć wszystkie pliki z określonym rozszerzeniem. Czy to coś, co może zrobić Gradle?Gradle - Usuwanie plików o określonym rozszerzeniu

+1

Gradle może zrobić wszystko, co można napisać w groovy. Tak więc prawdziwe pytanie brzmi: "czy istnieje gradle ** task **, które może usuwać pliki o określonym rozszerzeniu." Jeśli nie jest napisany jako zadanie, nie dostajesz korzyści z gradle wykresu zadań ('myBuild.dependsOn ('deleteFiles')') i/lub przyrostowych kompilacji. – kevinmm

Odpowiedz

34

Użyj Gradle Delete zadanie.

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

Dla mnie to zrobiło: 'delete fileTree (dir: 'dir/foo', include: '**. Ext')' (Gradle 4.1, 2017) – lealceldeiro

+0

Jak mogę zadeklarować zewnętrzną metodę typu delete? tj. ext.deleteFiles = {type: Delete String ... nazwa-pliku -> fileNames.each {nazwa-pliku -> delete $ fileName } } –

2

Istnieje kilka sposobów, aby usunąć pliki z pewnym extension.In generalnego należy wybrać kilka plików, a następnie filtrować niektóre z nich i ostatecznie usunąć przypominając przykład file.For spróbuj tego:

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

Pamiętaj, że jest to zasadniczo groovy kod przy użyciu interfejsu Grad.FileTree API. Kod będzie zawsze wykonywany podczas fazy konfiguracji kompilacji gradle, o ile nie jest zawarty w niestandardowym bloku zadań. – kevinmm

2

można dostosować Wartość domyślna clean zadanie obejmować inne katalogi i pliki do usunięcia jak:

clean{ 
    delete 'buildDir', 'generated' 
} 

Jeśli chcesz użyć glob, można użyć fileTree na przykład, albo innych dogodnych metod spisu pliki:

clean{ 
    delete 'build', 'target', fileTree(dockerBuildDir) { include '**/*.rpm' } 
} 
Powiązane problemy