Подтвердить что ты не робот

Gradle - удаление файлов с определенным расширением

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

clean{
  delete 'buildDir', 'generated'
}

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

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

Ответ 3

Существует несколько способов удаления файлов с определенным расширением. В общем, вы должны выбрать некоторые файлы, затем отфильтровать некоторые из них и, наконец, удалить напоминающий файл. Например, попробуйте следующее:

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

Ответ 4

clean {
  delete xxxx
}

Вышеуказанная чистота не так правильна. Потому что он на самом деле вызывает метод с именем clean по имени задачи. Тип метода обычно используется для настройки задачи, и это произошло во время настройки, а не во время выполнения задачи.

Следующее является более разумным способом, если вам нужно изменить очистку по умолчанию. Это мой пример, чтобы исключить все файлы, кроме одного. Действие удаления в чистой задаче действительно происходит во время выполнения задачи.

    clean {

    Task self = delegate
    self.deleteAllActions()
    self << {

        project.delete(fileTree(dir: buildDir).exclude("**/tmp/expandedArchives/org.jacoco.agent*/**"))

        def emptyDirs = []

        project.fileTree(dir: buildDir).visit {
            File f = it.file

            if (f.isDirectory() ) {
                def children = project.fileTree(f).filter { it.isFile() }.files
                if (children.size() == 0) {
                    emptyDirs << f
                }
            }
        }

        // reverse so that we do the deepest folders first
        emptyDirs.reverseEach {
            println "delete file: " + it + ", " + project.delete(it) //it.delete()
        }
    }
}