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
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.