Fix empty Android layout directories are not ignored
Kotlin Android extensions plugin adds layout directories as input to KotlinCompile task when experimental flag is enabled. This breaks cache relocation. ^KT-48849 Fixed
This commit is contained in:
+33
@@ -194,6 +194,39 @@ class BuildCacheRelocationIT : KGPBaseTest() {
|
||||
)
|
||||
}
|
||||
|
||||
@DisplayName("KT-48849: Kotlin compile should ignore empty layout resource directories added by kotlin android extensions")
|
||||
@GradleTestVersions(minVersion = TestVersions.Gradle.G_6_8)
|
||||
@GradleTest
|
||||
fun compileIgnoreEmptyAndroidResLayoutDirs(gradleVersion: GradleVersion) {
|
||||
val (firstProject, secondProject) = prepareTestProjects(
|
||||
"AndroidExtensionsProject",
|
||||
gradleVersion,
|
||||
defaultBuildOptions.copy(androidVersion = TestVersions.AGP.AGP_42)
|
||||
) {
|
||||
it.subProject("app").buildGradle.append(
|
||||
"""
|
||||
|
|
||||
|androidExtensions {
|
||||
| experimental = true
|
||||
|}
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
firstProject
|
||||
.subProject("app")
|
||||
.projectPath
|
||||
.resolve("src/main/res/layout-ar")
|
||||
.createDirectory()
|
||||
|
||||
checkBuildCacheRelocation(
|
||||
firstProject,
|
||||
secondProject,
|
||||
listOf("assembleDebug"),
|
||||
listOf(":app:compileDebugKotlin")
|
||||
)
|
||||
}
|
||||
|
||||
@DisplayName("with native project")
|
||||
@GradleTest
|
||||
@DisabledOnOs(OS.WINDOWS, disabledReason = "remove after fix of KT-48283")
|
||||
|
||||
+11
-1
@@ -19,6 +19,7 @@ import org.gradle.api.tasks.PathSensitivity
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.model.builder.KotlinAndroidExtensionModelBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
@@ -200,7 +201,16 @@ class AndroidSubplugin :
|
||||
)
|
||||
|
||||
kotlinCompile.configure {
|
||||
it.inputs.files(getLayoutDirectories(project, resDirectories)).withPathSensitivity(PathSensitivity.RELATIVE)
|
||||
it.inputs.files(getLayoutDirectories(project, resDirectories))
|
||||
.withPathSensitivity(PathSensitivity.RELATIVE)
|
||||
.withPropertyName("androidExtensionLayoutsFrom$name")
|
||||
.run {
|
||||
if (GradleVersion.current() >= GradleVersion.version("6.8")) {
|
||||
ignoreEmptyDirectories()
|
||||
} else {
|
||||
this!!
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user