Gradle 任务删除目录中的内容但排除 jar 文件

标签 gradle

我仍在尝试学习 Gradle 任务创作。

我找到了以下解决方案来帮助删除目录的内容,同时保持目录不变。

但是我可以帮助修改它以排除特定文件,例如 .jar 文件吗?

How to delete an empty directory (or the directory with all contents recursively) in gradle?

Heri给出了解决方案

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src" 
        file( dirName ).list().each{
        f -> delete "${dirName}/${f}"
    }
}

最佳答案

task deleteGraphicsAssets(type: Delete) {
    doLast {
        file('src').eachFileRecurse(groovy.io.FileType.FILES) { File file ->
            //Delete all files except *.jar
            if (!file.name.endsWith('.jar')) {
                delete file
            }

        }
    }
}

另一个选项是使用 Filetree对于更高级的过滤器,例如:

task deleteGraphicsAssets(type: Delete) {
    delete fileTree(dir: "tempDir", exclude: "dontDelete.jar")
}

关于Gradle 任务删除目录中的内容但排除 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49437384/

相关文章:

gradle - Scaladocs构建失败kafka

java - build.gradle 文件的 main-class 属性是什么?

android - 从 Gradle 运行 Android 的 build.xml 时,项目 "${build.target}"中不存在目标 "LibA"

maven - JFrog Artifactory的系统日志中出现409 HTTP错误

java - 无法通过 '11.0.4'确定Java版本

android - 错误:无法初始化类org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.StaticVersionComparator

android - 在 gradle android library kotlin 项目中禁用 META-INF/* 生成

android - flutter 主 channel 问题

android - 获取 java.lang.IllegalArgumentException : already added: Lcom/google/inject/AbstractModule

android - 如何找到导致类重复的依赖项?