输出gradle执行task名称、输入输出文件和耗时

来源:互联网 发布:什么得什么知成语 编辑:程序博客网 时间:2024/06/05 10:33

使用gradle编译android,很多时候,我们不清楚里面到底执行哪些操作及各个阶段的消耗的时间,

因此有个打印gradle的各个task的耗时及输入输出的文件对了解gradle很有帮助:

class TimingsListener implements TaskExecutionListener, BuildListener {    private Clock clock    private timings = []    @Override    void beforeExecute(Task task) {        clock = new org.gradle.util.Clock()        if (task.outputs.files.files) {            task.project.logger.warn "taskName:${task.name} "            task.project.logger.warn "inputs.files.files:-----------start------- "            task.inputs.files.files.each {                task.project.logger.warn "${it.absolutePath} "            }            task.project.logger.warn "inputs.files.files: -----------end---------- "        }    }    @Override    void afterExecute(Task task, TaskState taskState) {        def ms = clock.timeInMs        timings.add([ms, task.path])        task.project.logger.warn "${task.path} took ${ms}ms"        if(task.outputs.files.files) {            task.project.logger.warn "taskName:${task.name}"            task.project.logger.warn "outputs.files.files: ------------start----------------- "            task.outputs.files.files.each {                task.project.logger.warn "${it.absolutePath} "            }            task.project.logger.warn "outputs.files.files: ---------------end------------------ "        }    }    @Override    void buildFinished(BuildResult result) {        println "Task timings:"        for (timing in timings) {            if (timing[0] >= 50) {                printf "%7sms  %s\n", timing            }        }    }    @Override    void buildStarted(Gradle gradle) {}    @Override    void projectsEvaluated(Gradle gradle) {}    @Override    void projectsLoaded(Gradle gradle) {}    @Override    void settingsEvaluated(Settings settings) {}}gradle.addListener new TimingsListener()

参考:

http://jiajixin.cn/2015/08/07/gradle-android/

0 0
原创粉丝点击