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

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

最佳答案


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

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

正如其他人提到的那样,命令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'
        }
    }
}

10-07 19:39
查看更多