android - 如何使用任务gradle删除文件

标签 android gradle groovy terminal

我正在尝试使用Gradle任务删除文件

task remove {
    exec {
        working dir file/file2
        commandLine 'myFirstCommandLineWhichWorks'
        commandLine "rm", "'myFile.txt'"
    }
}
我收到错误消息“启动过程'命令'rm'时出现问题”
注意:我不想使用task something(type: Delete),也不要使用外部脚本。
它必须来自命令行。
有可能吗?

最佳答案

I'm trying to remove a file using a gradle task


Gradle为此用例提供了任务类型( Delete )和方法( delete )。

Note: I don't want to use task something(type: Delete)


为什么?如果您不想使用Gradle功能,则完全不要使用Gradle。

it must be from commandLine.


正如其他人提到的那样,命令rm在Windows系统上不可用。这是Gradle提取此功能的原因之一。

您的代码还有另一个问题:您定义了一个完全不相关的Gradle任务,因为它不会执行任何功能。 Gradle区分配置阶段和执行阶段。任务定义<code>闭包内的task <name> { <code> }将直接执行(在配置阶段)。当实际任务执行时(从命令行或作为任务依赖项),仅执行(内部)任务操作,doFirstdoLast闭包。
要解决此问题,请直接使用Delete类型的任务(仍然应该执行此操作),使用Exec类型的任务或将exec方法包装在doFirst / doLast闭包中:
task remove(type: Delete) {
    delete 'myFile.txt'
}

task remove(type: Exec) {
    commandLine 'del', 'myFile.txt', '/q'
}

task remove {
    doFirst {
        exec {
            commandLine 'del", 'myFile.txt', '/q'
        }
    }
}

关于android - 如何使用任务gradle删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64533373/

相关文章:

sorting - 在groovy中按文件名对数组进行排序

groovy - 灯泡:g.scripts.update():TypeError:序列项 2:预期字符串或 Unicode,未找到 NoneType

android - 从 JSON 响应在 Google map 上添加多个标记

android - 创建自己的 LiveWallpaperPreview?

android - MultiDexApplication 无法识别

gradle - 测试 gradle 任务是否执行

android - 找不到错误(3,0)Gradle DSL方法: 'buildToolsVersion()'

java - Gradle:如何创建多个jar?

java - 在 Thread.sleep 之前强制屏幕输出

android - CustomView 的这种技巧安全吗?