现在,对于频繁运行的gradle目标之一,输出如下所示:
:DataPlanner:清洁 :普通:干净 :服务器:干净 :模拟器:干净 :util:干净 :有用:compileJava :util:processResources最新 :有用:类 :有用:compileTestJava :实用程序:processTestResources :有用:testClasses :有用:测试 :实用程序:jar :common:compileJava :common:processResources最新 :common:classes :common:compileTestJava :common:processTestResources
如何使它看起来像这样?
:DataPlanner:清洁 花了2秒 :普通:干净 花了2秒 :服务器:干净 花了3秒 :模拟器:干净 用了4秒 :util:干净 用了1秒 ...
如果不可能让每个任务都在完成时打印其持续时间,则可以选择打印时间戳。
有任何想法吗?
修改对我不起作用的建议解决方案之一,该解决方案做到了:
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" )
}
}
您可以添加执行前和执行后的钩子。在任务执行之前,将当前时间添加为任务的属性,然后在执行之后,您可以将当前时间与已保存的时间进行比较。
import java.time.*
gradle.taskGraph.beforeTask { Task task ->
task.ext.setProperty("startTime", Instant.now())
}
gradle.taskGraph.afterTask { Task task, TaskState state ->
println task.name + " took " + Duration.between(task.ext.startTime, Instant.now()).toSeconds() + " seconds"
}
结果如下:
$gradle clean
:clean
clean took 0.043000000 seconds
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句