现在,对于频繁运行的 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 afterTask
taskGraph 挂钩来测量时间并将其打印出来。请注意,您需要小心谨慎,以防 gradle 以并行模式执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)