美文网首页
查看gradle各任务耗时

查看gradle各任务耗时

作者: ModestStorm | 来源:发表于2021-07-16 13:25 被阅读0次
//自定义task.gradle在build.gradle引用
class TaskTraceListener implements TaskExecutionListener, BuildListener {
    private long timeMillis
    private Map<Long, String> taskMap = new HashMap()
    private List<Long> mTimeList = new ArrayList<>();

    @Override
    void beforeExecute(Task task) {
        timeMillis = System.currentTimeMillis();
        println("task " + task.name + " beforeExecute at " + timeMillis);
    }

    @Override
    void afterExecute(Task task, TaskState state) {
        long endTime = System.currentTimeMillis();
        long spendTime = endTime - timeMillis;
        println("task " + task.name + " afterExecute at " + endTime + " spendTime " + spendTime)
        if (spendTime > 50) {
            println("addTaskName " + task.name + " spend " + spendTime)
            if (taskMap.containsKey(spendTime)) {
                taskMap.put(spendTime, taskMap.get(spendTime) + "----" + getTaskInfo(task))
            } else {
                taskMap.put(spendTime, getTaskInfo(task));
            }
            mTimeList.add(spendTime)
        }
    }

    String getTaskInfo(Task task) {
        return "" + task.project + "/" + task.name
    }

    @Override
    void buildStarted(Gradle gradle) {

    }

    @Override
    void settingsEvaluated(Settings settings) {

    }

    @Override
    void projectsLoaded(Gradle gradle) {

    }

    @Override
    void projectsEvaluated(Gradle gradle) {

    }

    @Override
    void buildFinished(BuildResult result) {
        println("buildFinished" + taskMap.size())
        long sum = 0;
        mTimeList.sort(new Comparator<Long>() {
            @Override
            int compare(Long o1, Long o2) {
                return o1 - o2
            }
        })
        mTimeList.forEach(new Consumer<Long>() {
            @Override
            void accept(Long aLong) {
                sum += aLong;
                println("task " + taskMap.get(aLong) + " spendTime " + aLong)
            }
        })
        println("total " + sum)
    }

}

gradle.addListener(new TaskTraceListener())

许多sourceSets的分组数有完全相同的配置

相关文章

网友评论

      本文标题:查看gradle各任务耗时

      本文链接:https://www.haomeiwen.com/subject/bcqbpltx.html