Gradle 渐变:任务中断时运行finalizedBy(ctrl-c)

Gradle 渐变:任务中断时运行finalizedBy(ctrl-c),gradle,Gradle,在Gradle中,如果后续操作被ctrl-c中断,是否可以运行finalizedBy?我认为这意味着将任务绑定到系统关闭挂钩。示例项目如下所示: task prepare << { println "preparing" } task longOperation << { sleep 50000 } longOperation.dependsOn prepare task cleanup << { println "clean" } p

在Gradle中,如果后续操作被ctrl-c中断,是否可以运行finalizedBy?我认为这意味着将任务绑定到系统关闭挂钩。示例项目如下所示:

task prepare << {
    println "preparing"
}
task longOperation << {
    sleep 50000
}
longOperation.dependsOn prepare
task cleanup << {
    println "clean"
}
prepare.finalizedBy cleanup
cleanup.mustRunAfter longOperation

免责声明:这是一个古老但尚未回答的问题。

我不这么认为,在Gradle的文档或API中,我没有看到任何类型的
SIGINT
或类似的钩子

这可能是设计的选择,因为这是低水平的。您可能需要使用
Process
的方法创建一些自定义内容,并覆盖/实现这些方法。同样,这是一项低水平的工作,最好探索Gradle提供的替代方案

一种可能的替代方法是在
long操作
之前始终调用
clean
任务。因此:

longOperation.dependsOn clean, prepare
但我认为更好的解决办法是以某种方式利用这些资源

longOperation.dependsOn clean, prepare