首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gradle processResources eachFile删除空目录

在Gradle构建过程中,processResources任务用于处理资源文件。如果你想在构建过程中删除空目录,可以通过自定义任务来实现。

首先,创建一个自定义任务,用于查找并删除空目录:

代码语言:javascript
复制
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths

class DeleteEmptyDirs extends DefaultTask {
    @TaskAction
    void deleteEmptyDirs() {
        // 指定要检查的目录,可以根据需要修改
        def resourceDir = 'build/resources/main'

        Files.walk(Paths.get(resourceDir))
            .filter { Files.isDirectory(it) }
            .filter { !Files.list(it).findAny().isPresent() }
            .forEach { Files.deleteIfExists(it) }
    }
}

接下来,在build.gradle文件中应用这个自定义任务:

代码语言:javascript
复制
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    // ...
}

// 应用自定义任务
task deleteEmptyDirs(type: DeleteEmptyDirs)

// 将自定义任务添加到processResources任务之前执行
processResources.dependsOn deleteEmptyDirs

现在,在执行gradle build时,Gradle会在处理资源文件之前删除空目录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

rmdir命令 – 删除空目录

rmdir命令作用是删除空的目录,英文全称:“remove directory”。 注意:rmdir命令只能删除空目录。当要删除空目录时,就要使用带有“-R”选项的rm命令。...rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。...语法格式 :  rmdir [参数] [目录名称] 常用参数: -p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 -- -- ignore-fail-on-non-empty 忽略由于删除空目录时导致命令出错而产生的错误信息...-v 显示命令的详细执行过程 -- -- help 显示命令的帮助信息 -- -- version 显示命令的版本信息 参考实例 删除空目录: [root@linuxcool ~]# rmdir dir...: 正在删除目录 'dir/dir_1' rmdir: 正在删除目录 'dir_2' 显示命令的版本信息: [root@linuxcool ~]# rmdir --version rmdir (GNU

1.4K00
  • linux系统使用rmdir命令删除空目录

    rmdir命令作用是删除空的目录,英文全称:“remove directory”。 注意:rmdir命令只能删除空目录。当要删除空目录时,就要使用带有“-R”选项的rm命令。...rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。...语法格式 :  rmdir [参数] [目录名称] 常用参数: -p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 -- -- ignore-fail-on-non-empty 忽略由于删除空目录时导致命令出错而产生的错误信息...-v 显示命令的详细执行过程 -- -- help 显示命令的帮助信息 -- -- version 显示命令的版本信息 参考实例 删除空目录: [root@linux ~]# rmdir dir 递归删除指定的目录树...' [root@linux ~]# rmdir -p -v dir/dir_1/dir_2 rmdir: 正在删除目录 'dir/dir_1/dir_2 rmdir: 正在删除目录 'dir/dir_1

    3K10

    centos系统使用rmdir命令删除空目录

    rmdir命令作用是删除空的目录,英文全称:“remove directory”。 注意:rmdir命令只能删除空目录。当要删除空目录时,就要使用带有“-R”选项的rm命令。...rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。...语法格式 :  rmdir [参数] [目录名称] 常用参数: -p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 -- -- ignore-fail-on-non-empty 忽略由于删除空目录时导致命令出错而产生的错误信息...-v 显示命令的详细执行过程 -- -- help 显示命令的帮助信息 -- -- version 显示命令的版本信息 参考实例 删除空目录: [root@linux ~]# rmdir dir 递归删除指定的目录树...' [root@linux ~]# rmdir -p -v dir/dir_1/dir_2 rmdir: 正在删除目录 'dir/dir_1/dir_2 rmdir: 正在删除目录 'dir/dir_1

    1.1K30

    python 删除文件、清空目录的方法总

    Python os.remove() 方法 os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。...像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。...print "删除后的目录为 : %s" %os.listdir(os.getcwd()) 执行以上程序输出结果为: 目录为: [ 'a1.txt','aa.txt','resume.doc'] 删除后的目录为...: [ 'a1.txt','resume.doc' ] 其他的总结 1、remove() 同 unlink() 的功能是一样的 在Windows系统中,删除一个正在使用的文件,将抛出异常。...在Unix中,目录表中的记录被删除,但文件的存储还在。 #使用os.unlink()和os.remove()来删除文件 #!

    11.8K10

    python 删除文件、清空目录的方法总结

    Python os.remove() 方法 os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。...像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。...print "删除后的目录为 : %s" %os.listdir(os.getcwd()) 执行以上程序输出结果为: 目录为: [ 'a1.txt','aa.txt','resume.doc'] 删除后的目录为...: [ 'a1.txt','resume.doc' ] 其他的总结 1、remove() 同 unlink() 的功能是一样的 在Windows系统中,删除一个正在使用的文件,将抛出异常。...在Unix中,目录表中的记录被删除,但文件的存储还在。 #使用os.unlink()和os.remove()来删除文件 #!

    3.8K20

    【linux命令讲解大全】023.rmdir命令:删除空目录的利器

    rmdir 用来删除空目录 补充说明 rmdir命令用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限制,就需要删除失去使用价值的目录。...注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部删除。另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。...语法 rmdir [选项] [目录列表] 选项 -p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则一并删除; --ignore-fail-on-non-empty:此选项使rmdir...参数 目录列表:要删除空目录列表。当删除多个空目录时,目录名之间使用空格隔开。 实例 将工作目录下名为www的子目录删除: rmdir www 在工作目录下的www目录中,删除名为Test的子目录。...若Test删除后,www目录成为空目录,则www亦被删除。 rmdir -p www/Test 下面命令等价于rmdir a/b/c,rmdir a/b,rmdir a: rmdir -p a/b/c

    16210

    gradle编译打包过程分析之ProcessAndroidResources

    引入源码 首先,如何查看gradle源码,我们在项目里依赖com.android.tools.build:gradle即可,如下: compile gradleApi() compile 'com.android.tools.build...:gradle:2.3.3' sync gradle后就可以看到相关的源码了 分析 我们要了解的是apk的打包过程,实际上是gradle的一个插件application apply plugin: '...com.android.application' 所以我们在gradle的源码下找到AppPligin,其部分源码如下: public class AppPlugin extends BasePlugin...这个processResources是AndroidBuilder的一个函数,部分源码如下: public void processResources( @NonNull Aapt aapt...总结 总结一下,在processResources这个过程中实际上是执行了一个aapt命令对资源文件进行编译,同时生成R文件等一些相关文件。

    97320

    游戏发行-安卓-控件注解框架-关键点1

    那样利用注解技术实现控件注入框架,这里我们叫它《自定义注解技术》 备注:由于涉及的知识点比较多,所以会分开来讲,本章主要讲关键点1 关键点1-自制资源SqR技术(这是个Gradle插件) 使用效果 1...新增加资源,如:图片/字符串等(一般情况是批量先弄好,再走到第2步) 2)生成SqR资源(除了这样点击之外,也可以弄成AS的快捷键更加方便使用) 3)愉快的使用 实现流程 1)首先需要先构建一个gradle.../") //获得资源任务(the Android Resources processing task) def variantOutput = variant.outputs.first() def processResources...= variantOutput.processResourcesProvider.get() def rFiles = project.files(processResources.textSymbolOutputFile...).builtBy(processResources) //获得R.txt路径 //R.txt路径:sqinjectgradleplugin/app/build/intermediates/symbols

    58120
    领券