[Build] Add configuration cache compatibility workaround for MetadataDependencyTransformationTask

This commit is contained in:
Dmitriy Novozhilov
2023-02-01 10:39:14 +02:00
committed by teamcity
parent 4e04a8bc69
commit a5f48e295e
+21 -1
View File
@@ -1,6 +1,9 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyTransformationTask
import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
import java.lang.reflect.Field
import java.lang.reflect.Modifier
plugins {
`maven-publish`
@@ -189,10 +192,27 @@ if (!isConfigurationCacheDisabled) {
it is org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|| it is org.jetbrains.kotlin.gradle.plugin.mpp.GenerateProjectStructureMetadata
|| it is org.jetbrains.kotlin.gradle.plugin.mpp.TransformKotlinGranularMetadata
|| it is MetadataDependencyTransformationTask
}.configureEach {
onlyIf {
logger.warn("Task '$name' is disabled due to incompatibility with configuration cache. KT-49933")
false
}
}
}
tasks.withType<MetadataDependencyTransformationTask>().configureEach {
try {
val field = MetadataDependencyTransformationTask::class.java.getDeclaredField("transformationParameters")
field.isAccessible = true
val params = field.get(this)
val removePropertiesValues = setOf("sourceSetVisibilityProvider", "resolvedMetadataConfiguration")
for (property in removePropertiesValues) {
val resolvedMetadataConfiguration = params::class.java.getDeclaredField(property)
resolvedMetadataConfiguration.isAccessible = true
resolvedMetadataConfiguration.set(params, null)
}
logger.warn("Applied configuration cache compatibility workaround for `MetadataDependencyTransformationTask`")
} catch (t: Throwable) {
logger.warn("Failed to apply workaround for configuration cache compatibility for `MetadataDependencyTransformationTask`")
}
}
}