我正在使用Gradle,希望删除具有特定扩展名的所有文件。Gradle可以执行此操作吗?
iswrvxsc1#
使用Gradle Delete任务。
Delete
task deleteFiles(type: Delete) { delete fileTree('dir/foo') { include '**/*.ext' } }
ovfsdjhp2#
您可以自定义默认的clean任务,以包括其他目录和文件进行删除,如:
clean
clean{ delete 'buildDir', 'generated' }
如果你想使用glob,你可以使用fileTree,或者其他方便的方法来列出文件:
fileTree
clean{ delete 'build', 'target', fileTree(dockerBuildDir) { include '**/*.rpm' } }
e37o9pze3#
删除具有一定扩展名的文件有几种方法,一般情况下,必须选择一些文件;然后过滤其中的一些,最后删除提醒文件。例如,试试这个:
def tree = fileTree('${SOME_DIR}') tree.include '**/*.${SOME_EXT}' tree.each { it.delete() }
ttp71kqs4#
clean { delete xxxx }
上面的clean不太正确,因为它实际上是通过任务名调用了一个名为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() } } }
5vf7fwbs5#
唯一对我有效的是:
// Include only files that have the '.ext' extension project.delete(fileTree(dir: './path/to/directory', include: "**.ext"))
我可以在Gradle文件的顶层调用它,而不必使用任何形式的clean任务。您甚至可以使用../sibling-directory-name从当前的基层目录上移到相邻的目录。
../sibling-directory-name
5条答案
按热度按时间iswrvxsc1#
使用Gradle
Delete
任务。ovfsdjhp2#
您可以自定义默认的
clean
任务,以包括其他目录和文件进行删除,如:如果你想使用glob,你可以使用
fileTree
,或者其他方便的方法来列出文件:e37o9pze3#
删除具有一定扩展名的文件有几种方法,一般情况下,必须选择一些文件;然后过滤其中的一些,最后删除提醒文件。例如,试试这个:
ttp71kqs4#
上面的clean不太正确,因为它实际上是通过任务名调用了一个名为
clean
的方法,这种方法通常用于配置任务,它发生在配置时,而不是任务执行时。下面是一个更合理的方法,如果你需要修改默认的清理。这是我的例子,删除所有的文件,除了一个排除。删除行动在清理任务真正发生在任务执行时间现在。
5vf7fwbs5#
唯一对我有效的是:
我可以在Gradle文件的顶层调用它,而不必使用任何形式的
clean
任务。您甚至可以使用
../sibling-directory-name
从当前的基层目录上移到相邻的目录。