我正在尝试使用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> }
将直接执行(在配置阶段)。当实际任务执行时(从命令行或作为任务依赖项),仅执行(内部)任务操作,doFirst
和doLast
闭包。
要解决此问题,请直接使用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'
}
}
}