2014-12-04 4 views
20

Я использую Gradle и хотел бы удалить все файлы с определенным расширением. Это что-то, что может сделать Gradle?Gradle - удалить файлы с определенным расширением

+1

Gradle может в значительной степени сделать все, что вы можете сценарировать в groovy. Итак, реальный вопрос: «есть ли задача gradle **, которая может удалять файлы с определенным расширением». Если он не написан как задание, то вы не получаете преимущества графика задачи градации ('myBuild.dependsOn ('deleteFiles')) и/или инкрементные сборки. – kevinmm

ответ

34

Используйте Gradle Delete задача.

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

Для меня это сделало это: 'delete fileTree (dir: 'dir/foo', include: '**. Ext')' (Gradle 4.1, 2017) – lealceldeiro

+0

Как объявить внешний метод удаления типа? то есть ext.deleteFiles = {type: Delete String ... fileNames -> fileNames.each {имя_файла -> удалить $ fileName } } –

2

Есть несколько способов удаления файлов с некоторыми общим extension.In, необходимо выбрать несколько файлов, а затем фильтровать некоторые из них и, наконец, удалить напоминания file.For примера, попробуйте следующее:

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

Опасайтесь, что это по существу код groovy, используя API Project.fileTree от gradle. Код всегда будет выполняться на этапе конфигурации построения градиента, если он не заключен в настраиваемый блок задач. – kevinmm

2

Вы можете настроить по умолчанию clean задачу включить другие каталоги и файлы для удаления, как:

clean{ 
    delete 'buildDir', 'generated' 
} 

Если вы хотите использовать Glob, вы можете использовать fileTree, например, или любые другие удобные методы перечисляют файлы:

clean{ 
    delete 'build', 'target', fileTree(dockerBuildDir) { include '**/*.rpm' } 
} 
Смежные вопросы