[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.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.d8.D8RootPlugin
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
import java.lang.reflect.Field
import java.lang.reflect.Modifier
plugins { plugins {
`maven-publish` `maven-publish`
@@ -189,10 +192,27 @@ if (!isConfigurationCacheDisabled) {
it is org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask 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.GenerateProjectStructureMetadata
|| it is org.jetbrains.kotlin.gradle.plugin.mpp.TransformKotlinGranularMetadata || it is org.jetbrains.kotlin.gradle.plugin.mpp.TransformKotlinGranularMetadata
|| it is MetadataDependencyTransformationTask
}.configureEach { }.configureEach {
onlyIf { onlyIf {
logger.warn("Task '$name' is disabled due to incompatibility with configuration cache. KT-49933") logger.warn("Task '$name' is disabled due to incompatibility with configuration cache. KT-49933")
false 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`")
}
}
}