gpt4 book ai didi

gradle - 在 Gradle 中,如何在所有任务完成后输出时间戳?

转载 作者:行者123 更新时间:2023-12-03 03:37:39 24 4
gpt4 key购买 nike

我有一个多项目 Gradle 项目,在根项目中,我有以下内容:

task timeStamp {
doLast {
Date now = new Date()
println "All completed @ $now"
}
}


allprojects {
afterEvaluate {
it.getTasks().each {
println "finalize set for \"$it.name\""
if (it.name != "timeStamp") {
it.finalizedBy(':timeStamp')
}
}
}
}

在我运行 gradlew build 时的输出中,timeStamp 任务运行,但运行 之前 其他一些任务。

如何在所有其他输出之后打印此时间戳? (如果可能的话,我更喜欢它直接在输出中的 BUILD SUCCESSFUL in ##s 之前)

最佳答案

如果您只是想在构建结束时打印时间戳(在执行最后一个任务之后),您可以实现如下:

gradle.getTaskGraph().whenReady { graph ->
graph.getAllTasks().last().doLast {
Date now = new Date()
println "\n ***** All completed @ $now ***"

}
}

这样,您将根据 Gradle 计算的任务执行图将操作添加到要执行的最后一个任务。

你也可以使用 buildFinished 钩子(Hook),但是回调会在 BUILD SUCCESSFUL in ##s 之后执行信息
gradle.buildFinished {
Date now = new Date()
println "\n ***** All completed @ $now ***"
}

命令的结果 ./gradlew classes
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE

BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 up-to-date

***** All completed @ Thu Sep 20 21:15:03 CEST 2018 ***

使用这两种解决方案,无论您正在执行什么任务(gradle build、gradle clean、*gradle assemble**、..),都会执行此回调

关于gradle - 在 Gradle 中,如何在所有任务完成后输出时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52430281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com