Grade 自定义 Task 实现 修复 java.io.IOException: Could not delet folder "xxx"

之前发布过一篇文章 :Gradlep构建 出现 java.io.IOException: Could not delet folder “xxx”,这里边讲的是 将报错文件删除就好,
后来总是遇到该问题,我就在想要不要弄成一键删除的方式。于是想改用什么方式实现自动删除文件
首先想到了Python脚本 ,后来觉得AndroidStudio 中添加这个东西显得不伦不类,后来想用Java 写到测试单元中,emmm…可这样显得不够逼格。于是gradle task 闪亮登场

具体步骤如下:

task delTask <<{
具体想法如下
	1.首先在项目下新建文件del.file,将报错信息复制到文件中
	2.读取del.file本地文件内容
	3.匹配到出错的内容,截取文件所在全路径
	4.执行文件夹删除操作
}

具体代码实现如下

task delTask{
        doLast{
            //读取文件,并装进List。
            def list = []
            new File('del.file').withReader('UTF-8') { reader ->
                reader.eachLine {
                    if (it.contains(">")) {
                        def pre = it.indexOf("'") +1
                        def aft = it.lastIndexOf("'")
                        list.add(it.substring(pre , aft))
                    }
                }
                File fileDel = new File(list.get(0))
                println(">>>>>> 要删除的文件夹路径:"+fileDel.getAbsolutePath())
                def isDel = fileDel.deleteDir()
                println(">>>>>> 文件夹是否删除:"+isDel)
            }
        }
    }

将以上代码放到build.gradle 中,执行构建

在这里插入图片描述

最后 ,执行gradle delTask 完美删除,不用再去文件夹中寻找文件了
在这里插入图片描述

最最后 你可能不喜欢 执行完 delTask 在切换执行 installDebug 或者是 其他Task ,那好办

 afterEvaluate {
        tasks.matching {
            it.name.contains("preBuild")//preBuild 是程序的 build 的最最开始,你把delTask 加载这儿,每次执行都将会先执行 delTask
        }.each { task ->
            task.dependsOn(rootProject.tasks.delTask)  // 任务依赖:执行task之前需要执行dependsOn指定的任务
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值