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")
|
@DisplayName("with native project")
|
||||||
@GradleTest
|
@GradleTest
|
||||||
@DisabledOnOs(OS.WINDOWS, disabledReason = "remove after fix of KT-48283")
|
@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.TaskProvider
|
||||||
import org.gradle.api.tasks.compile.AbstractCompile
|
import org.gradle.api.tasks.compile.AbstractCompile
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
|
import org.gradle.util.GradleVersion
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||||
import org.jetbrains.kotlin.gradle.model.builder.KotlinAndroidExtensionModelBuilder
|
import org.jetbrains.kotlin.gradle.model.builder.KotlinAndroidExtensionModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
@@ -200,7 +201,16 @@ class AndroidSubplugin :
|
|||||||
)
|
)
|
||||||
|
|
||||||
kotlinCompile.configure {
|
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