Create collectConsumerRulesTask only when variant is configured

This commit is contained in:
James Hamilton
2021-05-25 13:44:29 +02:00
committed by maqsood ahmad
parent 6330b9eff9
commit 6cf1999f52
2 changed files with 22 additions and 22 deletions

View File

@@ -31,6 +31,7 @@ import java.io.File
import org.gradle.api.GradleException
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.artifacts.Configuration
import org.gradle.api.attributes.Attribute
import org.gradle.api.tasks.TaskProvider
@@ -68,29 +69,27 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin<Projec
when (androidExtension) {
is AppExtension -> androidExtension.applicationVariants.all { applicationVariant ->
if (proguardBlock.configurations.hasVariantConfiguration(applicationVariant.name))
verifyNotMinified(applicationVariant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
applicationVariant,
createConsumerRulesConfiguration(project, applicationVariant),
File("${project.buildDir}/intermediates/proguard/configs")))
setupVariant(proguardBlock, applicationVariant, collectConsumerRulesTask, project)
}
is LibraryExtension -> androidExtension.libraryVariants.all { libraryVariant ->
if (proguardBlock.configurations.hasVariantConfiguration(libraryVariant.name))
verifyNotMinified(libraryVariant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
libraryVariant,
createConsumerRulesConfiguration(project, libraryVariant),
File("${project.buildDir}/intermediates/proguard/configs")))
setupVariant(proguardBlock, libraryVariant, collectConsumerRulesTask, project)
}
}
}
}
private fun setupVariant(proguardBlock: ProGuardAndroidExtension, variant: BaseVariant, collectConsumerRulesTask: TaskProvider<Task>, project: Project) {
if (proguardBlock.configurations.hasVariantConfiguration(variant.name)) {
verifyNotMinified(variant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
variant,
createConsumerRulesConfiguration(project, variant),
File("${project.buildDir}/intermediates/proguard/configs")))
}
}
private fun createCollectConsumerRulesTask(
project: Project,
variant: BaseVariant,

View File

@@ -9,6 +9,7 @@ package proguard.gradle
import io.kotest.core.spec.style.FreeSpec
import io.kotest.matchers.file.shouldExist
import io.kotest.matchers.file.shouldNotExist
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import io.kotest.matchers.string.shouldNotContain
@@ -22,7 +23,7 @@ import testutils.createTestKitDir
class ConsumerRulesCollectionTest : FreeSpec({
val testKitDir = createTestKitDir()
"Given an Android project" - {
"Given an Android project with one configured variant" - {
val project = autoClose(AndroidProject().apply {
addModule(applicationModule("app", buildDotGradle = """
plugins {
@@ -68,14 +69,14 @@ class ConsumerRulesCollectionTest : FreeSpec({
}
"When the tasks 'clean' and 'collectConsumerRulesDebug' are executed " - {
val result = createGradleRunner(project.rootDir, testKitDir, "clean", "collectConsumerRulesDebug").build()
val result = createGradleRunner(project.rootDir, testKitDir, "clean", "collectConsumerRulesDebug").buildAndFail()
"Then the task 'collectConsumerRulesDebug' is successful" {
result.task(":app:collectConsumerRulesDebug")?.outcome shouldBe TaskOutcome.SUCCESS
"Then the task 'collectConsumerRulesDebug' is not executed" {
result.task(":app:collectConsumerRulesDebug")?.outcome shouldBe null
}
"Then a subdirectory of the build directory should contain the consumer rules" {
File("${project.rootDir}/app/build/intermediates/proguard/configs/debug/consumer-rules.pro").shouldExist()
"Then a subdirectory of the build directory should not contain the consumer rules" {
File("${project.rootDir}/app/build/intermediates/proguard/configs/debug/consumer-rules.pro").shouldNotExist()
}
}