Track execution time per task in gradle script?

后端 未结 8 2282
深忆病人
深忆病人 2021-01-30 06:37

What is the most elegant way to track the execution times on how long a task took in a gradle build script? In an optimal case log the time directly same or next line to the tas

8条回答
  •  自闭症患者
    2021-01-30 07:09

    I have tried with @Jilevys solution but was getting error in finding the class org.gradle.util.Clock()

    I have modified it to use Java8 classes. Put below code on top of the build.gradle

        import java.time.LocalDateTime
    
    class TimingsListener implements TaskExecutionListener, BuildListener {
        private LocalDateTime taskStartTime
    
        @Override
        void beforeExecute(Task task) {
            taskStartTime = LocalDateTime.now();
        }
    
        @Override
        void afterExecute(Task task, TaskState taskState) {
            LocalDateTime taskEndTime = LocalDateTime.now();
            def seconds = Duration.between(taskStartTime, taskEndTime).toSeconds();
            task.project.logger.warn "${task.path} took ${seconds} seconds."
        }
    
        @Override
        void buildStarted(Gradle gradle) {
            project.logger.warn "Build started on "+LocalDateTime.now()
        }
    
        @Override
        void settingsEvaluated(Settings settings) {
    
        }
    
        @Override
        void projectsLoaded(Gradle gradle) {
    
        }
    
        @Override
        void projectsEvaluated(Gradle gradle) {
    
        }
    
        @Override
        void buildFinished(BuildResult result) {
            project.logger.warn "Build finished on "+LocalDateTime.now()
    
        }
    }
    gradle.addListener new TimingsListener()
    

    It produces output similar to given below.

    : took 10 seconds.
    

提交回复
热议问题