通过gradle FileTree.include删除目录
我想说:通过gradle FileTree.include删除目录,gradle,Gradle,我想说: clean.delete(fileTree("a") { include "subdir/" include "aFile" }) 删除目录“subdir”和文件“aFile”。但不会删除“subdir”。我可以明确列出: clean.delete("a/subdir") 但这比我想要的更重复。是否可以让fileTree.include执行此任务 到目前为止,我提出了: [ "subdir", "aFile", ... ].each { it ->
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")
}
但这有点尴尬。您可以这样指定:
clean {
delete 'a/aFile', 'a/subdir'
}
不知道为什么文件树不工作。恐怕这是不可能的。在gradle论坛上看到这个。讨论导致了这一点 一个简单的测试表明
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
}
}
所以fileTree只用于目录树中的文件,而不用于目录。这样如何
clean.delete(file('a').listFiles().findAll { it.getName() == 'subdir' || it.getName() == 'aFile' })
我只是碰巧弄明白了如何删除构建目录下的所有目录和文件,而不包括一个特定目录
clean.delete(file('build').listFiles().findAll { it.getName() != 'tools' })
谢谢,我希望避免在每个条目中重复父项(“a”)。我想这是可能的,但现在我已经知道怎么做了。也许这篇文章也会对你有所帮助:谢谢你给出了明确的答案,以及一个合理的建议(我在那里已经做得相当混乱)。很高兴知道我不是唯一一个面对这个问题的人。
clean.delete(file('build').listFiles().findAll { it.getName() != 'tools' })