KAPT - Make StructureTransformAction cacheable

When computing classpath structure ignore absolute
paths and timestamps. This also makes the transform
cacheable and it should increase cache hit rate.

Test: existing BuildCacheRelocationIT
This commit is contained in:
Ivan Gavrilovic
2021-02-24 17:48:36 +00:00
committed by nataliya.valtman
parent 9badbfc30d
commit d73f5d299a
@@ -5,12 +5,10 @@
package org.jetbrains.kotlin.gradle.internal.kapt.incremental
import org.gradle.api.artifacts.transform.InputArtifact
import org.gradle.api.artifacts.transform.TransformAction
import org.gradle.api.artifacts.transform.TransformOutputs
import org.gradle.api.artifacts.transform.TransformParameters
import org.gradle.api.artifacts.transform.*
import org.gradle.api.file.FileSystemLocation
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.Classpath
import org.jetbrains.org.objectweb.asm.ClassReader
import org.jetbrains.org.objectweb.asm.ClassWriter
import java.io.*
@@ -20,8 +18,10 @@ import java.util.zip.ZipFile
const val CLASS_STRUCTURE_ARTIFACT_TYPE = "class-structure"
private const val MODULE_INFO = "module-info.class"
@CacheableTransform
abstract class StructureTransformAction : TransformAction<TransformParameters.None> {
@get:InputArtifact
@get:Classpath
abstract val inputArtifact: Provider<FileSystemLocation>
override fun transform(outputs: TransformOutputs) {
@@ -39,8 +39,10 @@ abstract class StructureTransformAction : TransformAction<TransformParameters.No
* supported until gradle version 5.4. Once our minimal supported gradle version is 5.4 or above, this legacy artifact transform can be
* removed.
*/
@CacheableTransform
abstract class StructureTransformLegacyAction : TransformAction<TransformParameters.None> {
@get:InputArtifact
@get:Classpath
abstract val inputArtifact: File
override fun transform(outputs: TransformOutputs) {