我正在尝试使用gradle任务删除文件
task remove {
exec {
working dir file/file2
commandLine 'myFirstCommandLineWhichWorks'
commandLine "rm", "'myFile.txt'"
}
}
我得到错误“A problem occurred starting process 'command ' rm '”
注意:我不想使用task something(type: Delete)
,也不想使用外部脚本。它必须来自命令行。有这种可能吗?
2条答案
按热度按时间vlurs2pr1#
Gradle为此用例提供了任务类型(
Delete
)和方法(delete
)。注意:我不想使用
task something(type: Delete)
为什么?如果您不想使用Gradle功能,那就不要使用Gradle。
它必须来自命令行。
正如其他人所提到的,
rm
命令在Windows系统上不可用。这也是Gradle将此功能抽象化的原因之一。你的代码还有一个问题:您定义了一个完全无关的Gradle任务,因为它不会执行任何功能。Gradle区分了 * 配置阶段 * 和 * 执行阶段 *。任务定义
task <name> { <code> }
的闭包中的<code>
将直接执行(在配置阶段)。只有(内部)任务操作,doFirst
和doLast
闭包在实际任务执行时执行(无论是从命令行还是作为任务依赖项)。要解决这个问题,要么直接使用
Delete
类型的任务(无论如何都应该这样做),要么使用Exec
类型的任务,或者将exec
方法 Package 在doFirst
/doLast
闭包中:3gtaxfhh2#
如果你使用的是Windows,你应该使用命令“del /q”而不是“rm”。
正如我在评论中提到的,我建议使用Groovy来删除文件,因为从命令行执行特定于环境的命令会失去互操作性,所以当你将环境切换到Mac或Linux时,命令将不再起作用。也可以试试我从这篇文章中得到的这段代码:Groovy executing shell commands
使用普通的groovy方法,它应该超级简单: