From 6ee503f2b2ef2a2d90db5e028a88cb95f19cc55f Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 3 Mar 2022 12:43:41 +0100 Subject: [PATCH] Add KotlinCompile.androidLayoutResources input This input is used by 'android-extensions' subplugin to track changed Android layout resource files. ^KT-32805 In Progress --- .../internal/kapt/KaptGenerateStubsTask.kt | 3 +++ .../android/internal/AndroidSubplugin.kt | 2 +- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt index 549b9cf6594..361e7aad6bb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptGenerateStubsTask.kt @@ -125,6 +125,9 @@ abstract class KaptGenerateStubsTask @Inject constructor( @get:Internal override val scriptSources: FileCollection = objectFactory.fileCollection() + @get:Internal + override val androidLayoutResources: FileCollection = objectFactory.fileCollection() + override val incrementalProps: List get() = listOf( sources, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt index 993191dcefe..109987d92e2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt @@ -130,7 +130,7 @@ class AndroidSubplugin : KotlinCompilerPluginSupportPlugin { ) ) kotlinCompilation.compileKotlinTaskProvider.configure { - it.setSource(getLayoutDirectories(project, sourceSet.res.srcDirs)) + it.androidLayoutResourceFiles.from(getLayoutDirectories(project, sourceSet.res.srcDirs)) } } 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 f1d964d2132..6e747c82dcc 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 @@ -743,6 +743,7 @@ abstract class KotlinCompile @Inject constructor( sources, javaSources, scriptSources, + androidLayoutResources, commonSourceSet, classpathSnapshotProperties.classpath, classpathSnapshotProperties.classpathSnapshot @@ -987,6 +988,22 @@ abstract class KotlinCompile @Inject constructor( .matching(::javaFilesPatternFilter) ) + @get:Internal + internal val androidLayoutResourceFiles = objectFactory.fileCollection() + + /** + * This input is used by android-extensions plugin + */ + @get:Incremental + @get:InputFiles + @get:IgnoreEmptyDirectories + @get:PathSensitive(PathSensitivity.RELATIVE) + internal open val androidLayoutResources: FileCollection = androidLayoutResourceFiles + .asFileTree + .matching { patternFilterable -> + patternFilterable.include("xml".fileExtensionCasePermutations().map { "**/*.$it" }) + } + // override setSource to track Java and script sources as well override fun setSource(source: Any) { javaSourceFiles.from(source)