我想说:
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")
}
但这有点尴尬。
恐怕这是不可能的。看到这个讨论 http://forums.gradle.org/gradle/topics/how_do_i_delete_a_subset_of_files在 Gradle 论坛上。讨论导致了这样的结果issue http://issues.gradle.org//browse/GRADLE-2822.
一个简单的测试表明
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 仅适用于目录树中的文件,而不适用于目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)