diff --git a/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt b/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt index 921540ca..b43d25a9 100644 --- a/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt +++ b/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt @@ -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 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, 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, diff --git a/gradle-plugin/src/test/kotlin/proguard/gradle/ConsumerRulesCollectionTest.kt b/gradle-plugin/src/test/kotlin/proguard/gradle/ConsumerRulesCollectionTest.kt index 9b35c751..fd08963b 100644 --- a/gradle-plugin/src/test/kotlin/proguard/gradle/ConsumerRulesCollectionTest.kt +++ b/gradle-plugin/src/test/kotlin/proguard/gradle/ConsumerRulesCollectionTest.kt @@ -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() } }