首页 > 解决方案 > 删除除子树外的所有子目录

问题描述

我是新来的。我正在尝试创建一个 gradle 任务,以删除除其中一部分之外的所有目录。

这是我的情况 src/main/java test/package1 test/package2 com/package3 com/package4 it/package5

这里是我的代码:

task deleteFolders(type: Delete){

    group = 'build'
    if(currentTask == "deleteFolders"){ 

        def ftree=fileTree(dir: "$javaDir").exclude('test/package2')
        ftree.exclude('test/package1')
        ftree.visit { FileVisitDetails details ->
            delete  details.file
    }
}

但是这段代码会删除所有内容,包括“排除”中的包。

尝试使用其他代码

task deleteFolders{//(type: Delete)

    group = 'build'
    if(currentTask == "deleteFolders"){ 
        delete fileTree(dir: "$javaDir").matching {
             exclude 'test/package1/**' 
             exclude 'test/package2/**'
        }
    }

一切正常,但 com 文件夹仍然是空的(我想删除它)。

那么,有人可以帮我达到这个结果吗?

src/main/java 测试/package1 测试/package2

非常感谢狮子座

标签: build.gradle

解决方案


也许您可以尝试如下方式:

deleteTask = { dealFilePath, destFileName ->
    file(dealFilePath).list().each {
        f ->
            if (!f.contains(destFileName)) {
                delete "${dealFilePath}/${f}"
            }

    }

}

推荐阅读