使用 Gradle,如何打印每个任务执行所需的时间?

2024-04-21

现在,对于频繁运行的 gradle 目标之一,输出如下所示:



:DataPlanner:clean
:common:clean
:server:clean
:simulator:clean
:util:clean
:util:compileJava
:util:processResources UP-TO-DATE
:util:classes
:util:compileTestJava
:util:processTestResources
:util:testClasses
:util:test
:util:jar
:common:compileJava
:common:processResources UP-TO-DATE
:common:classes
:common:compileTestJava
:common:processTestResources
  

我怎样才能让它看起来更像这样?



:DataPlanner:clean
took 2secs
:common:clean
took 2 secs
:server:clean
took 3 secs
:simulator:clean
took 4 secs
:util:clean
took 1 sec
...
  

如果不可能让每个任务在完成后打印其持续时间,则打印时间戳将是一个可接受的替代方案。

有任何想法吗?

修改了对我不起作用的建议解决方案之一,这个解决方案确实有效:

gradle.taskGraph.beforeTask { Task task ->
task.ext.setProperty("startTime", new java.util.Date())
}

gradle.taskGraph.afterTask { Task task, TaskState state ->
    int secs = ( new java.util.Date().getTime() - task.ext.startTime.getTime() ) / 1000
    int mins = secs / 60

    if ( 4 < secs ) {
        int sec = secs - mins * 60
        println " -> took " + mins + ( ( 1 == mins ) ? " min " : " mins " ) + sec + ( ( 1 == sec ) ? " sec" : " secs" )
    }
}

我不知道你是如何得到这个特定的输出的。但是,您可以使用--profile命令行标志以获得有关您的构建的报告。然后你会得到一个位于 build/reports/profile 下的 html 报告,在 Gradle 2.3 中如下所示:

您可以在 Gradle 文档中阅读更多相关信息here http://gradle.org/docs/current/userguide/tutorial_gradle_command_line.html#sec:profiling_build.

如果您坚持要获取指定的特定输出,您可以尝试使用beforeTask and afterTasktaskGraph 挂钩来测量时间并将其打印出来。请注意,您需要小心谨慎,以防 gradle 以并行模式执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gradle,如何打印每个任务执行所需的时间? 的相关文章

随机推荐