From e46b56acbc36e60c9dd341eaa42d23ff616ae819 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Thu, 16 Nov 2017 22:05:59 +0300 Subject: [PATCH] Add @LocalState of buildServicesWorkingDir to KotlinCompile --- .../kotlin/gradle/plugin/KotlinGradleBuildServices.kt | 2 +- .../kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 3 +++ .../main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleBuildServices.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleBuildServices.kt index b387814cd4a..bcc006d5186 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleBuildServices.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleBuildServices.kt @@ -72,7 +72,7 @@ internal class KotlinGradleBuildServices private constructor(gradle: Gradle): Bu private val log = Logging.getLogger(this.javaClass) private val cleanup = CompilerServicesCleanup() private var startMemory: Long? = null - private val workingDir: File by lazy { File(gradle.rootProject.buildDir, "kotlin-build").apply { mkdirs() } } + internal val workingDir: File by lazy { File(gradle.rootProject.buildDir, "kotlin-build").apply { mkdirs() } } private val buildCacheStorage: BuildCacheStorage by lazy { BuildCacheStorage(workingDir) } private val shouldReportMemoryUsage = System.getProperty(SHOULD_REPORT_MEMORY_USAGE_PROPERTY) != null diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index df3f39da6c9..65bc86a6001 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -203,6 +203,9 @@ internal class Kotlin2JvmSourceSetProcessor( registerKotlinOutputForJavaLibrary(classesDirectory, classesProviderTask) } + + // To make Gradle read this location from the task's @LocalState property and clean it on cache hit: + kotlinTask.buildServicesWorkingDir = Callable { kotlinGradleBuildServices.workingDir } } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 1f7e0220344..f9d74885aa9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -47,6 +47,7 @@ import org.jetbrains.kotlin.incremental.multiproject.ArtifactDifferenceRegistryP import org.jetbrains.kotlin.utils.LibraryUtils import java.io.File import java.util.* +import java.util.concurrent.Callable import kotlin.properties.Delegates const val ANNOTATIONS_PLUGIN_NAME = "org.jetbrains.kotlin.kapt" @@ -276,6 +277,9 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl logger.kotlinDebug { "Set $this.usePreciseJavaTracking=$value" } } + @get:LocalState @get:Optional + internal var buildServicesWorkingDir: Callable? = null + init { incremental = true }