Ответ 1
Используйте задачу Gradle Delete
.
task deleteFiles(type: Delete) {
delete fileTree('dir/foo') {
include '**/*.ext'
}
}
Я использую Gradle и хотел бы удалить все файлы с определенным расширением. Возможно ли что-то Gradle?
Используйте задачу Gradle Delete
.
task deleteFiles(type: Delete) {
delete fileTree('dir/foo') {
include '**/*.ext'
}
}
Вы можете настроить задачу по умолчанию clean
для включения других каталогов и файлов для удаления, например:
clean{
delete 'buildDir', 'generated'
}
Если вы хотите использовать glob, вы можете использовать fileTree
, например, или любые другие удобные методы для просмотра файлов:
clean{
delete 'build', 'target', fileTree(dockerBuildDir) { include '**/*.rpm' }
}
Существует несколько способов удаления файлов с определенным расширением. В общем, вы должны выбрать некоторые файлы, затем отфильтровать некоторые из них и, наконец, удалить напоминающий файл. Например, попробуйте следующее:
def tree = fileTree('${SOME_DIR}')
tree.include '**/*.${SOME_EXT}'
tree.each { it.delete() }
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()
}
}
}