之前发布过一篇文章 :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指定的任务
}
}