Как удалить пустой каталог (или каталог со всем содержимым рекурсивно) в gradle?

Я не могу понять, как удалить все содержимое каталога.

Для очистки каталога я хочу удалить все файлы и каталоги внутри него: я хочу стереть все, что есть внутри (файлы и каталоги).

Я попробовал это с задачей удаления, но я не могу понять, как это сделать, а также удалить каталоги, а не только файлы. Я пробовал разные способы указать каталоги, но ничего не работает.

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('**/*')
}

.

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('/')
}

.

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('*')
}

Любая помощь оценивается!


Изменить:

Это работает - но это похоже на взлом.

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src"
    delete dirName

    doLast {
        file(dirName).mkdirs()
    }
}

Я искал что-то вроде:

task deleteGraphicsAssets(type: Delete) {
    deleteContentsOfDirectory "src"
}

или

task deleteGraphicsAssets(type: Delete) {
    delete {dir : "src", keepRoot : true }
}

Ответ 1

Чтобы удалить каталог src и все его содержимое:

task deleteGraphicsAssets(type: Delete) {
    delete "src"
}

Ответ 2

Groovy улучшает класс File несколькими способами. Вы можете удалить каталог со всеми его подкаталогами и файлами с помощью метода deleteDir().

task deletebin << {
    def binDir = new File('bin')
    binDir.deleteDir()
}

Ответ 3

Следующее приведет к удалению всего содержимого из папки src, но оставляет папку самой нетронутой:

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src" 
    file( dirName ).list().each{
        f -> 
            delete "${dirName}/${f}"
    }
}

Ответ 4

clean {
    delete += fileTree('src').include('**/*')
}

Эта конфигурация "чистой" задачи работает.

Ответ 5

С риском воскрешения ответной темы существует относительно простой способ сделать это.

Эта задача удалит все файлы и каталоги под "src" без прохождения дерева файлов и без удаления в 'src' dir

task deleteGraphicsAssets(type:Delete) {
    delete file('src').listFiles()
}

Ответ 6

Найдено с использованием FileTree # visit работал.

ConfigurableFileTree ft = fileTree('someDir')
ft.include("xxx")
ft.exclude("yyy")

task delteFilesOnly() {
    doLast {
        //// for test
        //ft.each { File file ->
        //    println "===== " + file.absolutePath
        //}
        delete ft
    }
}

task deleteFilesAndDirs(){
    doLast {
        ft.visit { FileVisitDetails fvd ->
            //// for test
            //println "----- " + file.absolutePath
            delete fvd.file
        }
    }
}