[Gradle, MPP] Make kotlin tooling metadata task compatible w/ conf cache
The value should be memoized in task, so it can be serialized in a way to not use project in execution time #KT-47612 In Progress
This commit is contained in:
+3
-2
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.tooling.buildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||
@@ -186,7 +187,7 @@ class BuildKotlinToolingMetadataTest {
|
||||
}
|
||||
|
||||
private fun getKotlinToolingMetadata(): KotlinToolingMetadata {
|
||||
val task = project.buildKotlinToolingMetadataTask!!.get()
|
||||
return task.getKotlinToolingMetadata()
|
||||
val task = project.buildKotlinToolingMetadataTask?.get() ?: error("No ${BuildKotlinToolingMetadataTask.defaultTaskName} task")
|
||||
return task.kotlinToolingMetadata
|
||||
}
|
||||
}
|
||||
|
||||
+8
-7
@@ -44,7 +44,7 @@ internal val Project.buildKotlinToolingMetadataTask: TaskProvider<BuildKotlinToo
|
||||
}
|
||||
}
|
||||
|
||||
open class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
|
||||
companion object {
|
||||
/**
|
||||
@@ -59,19 +59,20 @@ open class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
val outputFile: Property<File> = project.objects.property(File::class.java)
|
||||
.convention(project.buildDir.resolve("kotlinToolingMetadata").resolve("kotlin-tooling-metadata.json"))
|
||||
|
||||
@Internal
|
||||
fun getKotlinToolingMetadata(): KotlinToolingMetadata {
|
||||
return project.kotlinExtension.getKotlinToolingMetadata()
|
||||
@get:Internal
|
||||
internal val kotlinToolingMetadata by lazy {
|
||||
project.kotlinExtension.getKotlinToolingMetadata()
|
||||
}
|
||||
|
||||
@Input
|
||||
internal fun getKotlinToolingMetadataJson(): String = getKotlinToolingMetadata().toJsonString()
|
||||
@get:Input
|
||||
internal val kotlinToolingMetadataJson
|
||||
get() = kotlinToolingMetadata.toJsonString()
|
||||
|
||||
@TaskAction
|
||||
internal fun createToolingMetadataFile() {
|
||||
val outputFile = outputFile.orNull ?: return
|
||||
outputFile.parentFile.mkdirs()
|
||||
outputFile.writeText(getKotlinToolingMetadataJson())
|
||||
outputFile.writeText(kotlinToolingMetadataJson)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user