我想说:
clean.delete(fileTree("a") {
include "subdir/"
include "aFile"
})删除目录"subdir“和文件"aFile”。但是"subdir“并没有被删除。我可以明文规定:
clean.delete("a/subdir")但这比我想要的要多。fileTree.include能做这份工作吗?
到目前为止,我已经想出了:
[ "subdir",
"aFile",
...
].each { it ->
clean.delete("a/$it")
}但那只是有点尴尬。
发布于 2014-06-27 17:25:38
恐怕这是不可能的。在梯度论坛上看到这个讨论。讨论导致了这个问题。
一个简单的测试显示
task makeDir << {
['a', 'a/subdir'].each { new File(it).mkdirs() }
new File('a/aFile').createNewFile()
def tree = fileTree('a') {
include 'subdir/'
include 'aFile'
}
tree.each {File file ->
println file
}
}只打印文件,而不打印目录,因为目录是遍历的。您的解决方案很好,但您可以节省一些图表:
[ "subdir",
"aFile",
...
].each { clean.delete("a/$it") }因此,fileTree只适用于目录树中的文件,而不是目录。
发布于 2014-06-18 08:21:00
您可以这样指定它:
clean {
delete 'a/aFile', 'a/subdir'
}不知道为什么fileTree不能工作。
发布于 2018-06-07 03:22:13
这边怎么样?
clean.delete(file('a').listFiles().findAll { it.getName() == 'subdir' || it.getName() == 'aFile' })我只是碰巧知道如何删除构建目录下的所有目录和文件,而不包括一个特定的目录。
clean.delete(file('build').listFiles().findAll { it.getName() != 'tools' })https://stackoverflow.com/questions/24274966
复制相似问题