现在,对于频繁运行的gradle目标之一,输出如下所示:
:DataPlanner:清洁 :普通:干净 :服务器:干净 :模拟器:干净 :util:干净 :util:compileJava :util:processResources最新 :util:classes :util:compileTestJava :util:processTestResources :util:testClasses :util:test :util: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" )
}
}
Run Code Online (Sandbox Code Playgroud)
您可以添加执行前和执行后挂钩来执行此操作。在任务执行之前,将当前时间添加为任务的一个属性,然后在执行之后,您可以将当前时间与保存的时间进行比较。
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"
}
Run Code Online (Sandbox Code Playgroud)
结果是这样的输出:
$gradle clean
:clean
clean took 0.043000000 seconds
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |