From e7f844ab7f3190960ec7e650ab8988a0bf837bce Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 2 Jan 2016 10:10:00 -0800 Subject: [PATCH] Make Kotlin compileTest incremental. --- .../kobalt/plugin/kotlin/KotlinPlugin.kt | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index 84772daf..6b1c67f3 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -1,14 +1,16 @@ package com.beust.kobalt.plugin.kotlin +import com.beust.kobalt.IncrementalTaskInfo import com.beust.kobalt.TaskResult import com.beust.kobalt.api.* import com.beust.kobalt.api.annotation.Directive -import com.beust.kobalt.api.annotation.Task +import com.beust.kobalt.api.annotation.IncrementalTask import com.beust.kobalt.internal.JvmCompiler import com.beust.kobalt.internal.JvmCompilerPlugin import com.beust.kobalt.maven.DepFactory import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.LocalRepo +import com.beust.kobalt.maven.Md5 import com.beust.kobalt.maven.dependency.FileDependency import com.beust.kobalt.maven.dependency.MavenDependency import com.beust.kobalt.misc.KFiles @@ -73,8 +75,21 @@ class KotlinPlugin @Inject constructor( // return TaskResult(success) // } - @Task(name = TASK_COMPILE_TEST, description = "Compile the tests", runAfter = arrayOf(TASK_COMPILE)) - fun taskCompileTest(project: Project): TaskResult { + @IncrementalTask(name = TASK_COMPILE_TEST, description = "Compile the tests", runAfter = arrayOf(TASK_COMPILE)) + fun taskCompileTest(project: Project): IncrementalTaskInfo { + val inputChecksum = Md5.toMd5Directories(project.sourceDirectoriesTest.map { + File(project.directory, it) + }) + return IncrementalTaskInfo( + inputChecksum = inputChecksum, + outputChecksum = { + Md5.toMd5Directories(listOf(KFiles.makeOutputTestDir(project))) + }, + task = { project -> doTaskCompileTest(project) } + ) + } + + private fun doTaskCompileTest(project: Project) : TaskResult { copyResources(project, JvmCompilerPlugin.SOURCE_SET_TEST) val projectDir = File(project.directory)