android - 如何使用任务 gradle 删除文件
问题描述
我正在尝试使用 gradle 任务删除文件
task remove {
exec {
working dir file/file2
commandLine 'myFirstCommandLineWhichWorks'
commandLine "rm", "'myFile.txt'"
}
}
我收到错误“启动进程'命令'rm'出现问题”
注意:我不想使用task something(type: Delete)
并且没有外部脚本。它必须来自命令行。有没有可能?
解决方案
我正在尝试使用 gradle 任务删除文件
Gradle 为这个用例提供了一个任务类型 ( Delete
) 和一个方法 ( delete
)。
注意:我不想使用
task something(type: 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'
}
}
}
推荐阅读
- c# - asp.net core 2.2中的响应压缩不起作用
- python - 如何在python中显示不同大小和颜色的散点图例?
- java - 如何使用 mockito 框架获取返回的对象
- mysql-workbench - 无法通过 MySQL 工作台中的表编辑器编辑或添加表
- ios - 我可以将我的 iOS 应用程序部署到较低的 iOS 版本吗?
- python - 烧瓶上的视频流没有错误,但它只运行应用程序而不显示在浏览器上
- database - 如何将一个主键字段关联到多个表?
- python - 如何填充熊猫中的重复值?
- elasticsearch - 弹性搜索 - 更新特定的嵌套对象
- python - 如何生成给定起点的组合?