From 729f42fb6d8ff8f79d360c25bb0e5c29385056dd Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 3 Sep 2026 10:36:48 +0800 Subject: [PATCH] Extract addVariants for AdhocComponentWithVariants --- .../gradle/plugins/shadow/PublishingTest.kt | 4 +- .../gradle/plugins/shadow/ShadowJavaPlugin.kt | 40 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/PublishingTest.kt b/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/PublishingTest.kt index ea6d376d7..4aaf12455 100644 --- a/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/PublishingTest.kt +++ b/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/PublishingTest.kt @@ -564,9 +564,9 @@ class PublishingTest : BasePluginTest() { assertThat(result.output) .contains( if (addShadowVariant) { - "Adding shadowRuntimeElements variant to Java component." + "Adding shadowRuntimeElements variant to java component." } else { - "Skipping adding shadowRuntimeElements variant to Java component." + "Skipping adding shadowRuntimeElements variant to java component." } ) val assertVariantsCommon = { gmm: GradleModuleMetadata -> diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.kt index b97b26783..ff017e8ca 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.kt @@ -19,7 +19,9 @@ import org.gradle.api.attributes.LibraryElements import org.gradle.api.attributes.Usage import org.gradle.api.attributes.java.TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE import org.gradle.api.component.AdhocComponentWithVariants +import org.gradle.api.component.ConfigurationVariantDetails import org.gradle.api.component.SoftwareComponentFactory +import org.gradle.api.logging.Logger import org.gradle.api.plugins.JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME import org.gradle.api.tasks.bundling.Jar @@ -113,18 +115,36 @@ constructor(private val softwareComponentFactory: SoftwareComponentFactory) : Pl val shadowRuntimeElements = configurations.shadowRuntimeElements val shadowComponent = softwareComponentFactory.adhoc(COMPONENT_NAME) components.add(shadowComponent) - shadowComponent.addVariantsFromConfiguration(shadowRuntimeElements) { variant -> - variant.mapToMavenScope("runtime") + shadowComponent.addVariants( + outgoingConfiguration = shadowRuntimeElements, + logger = logger, + ) { + mapToMavenScope("runtime") } components.named("java", AdhocComponentWithVariants::class.java) { component -> - component.addVariantsFromConfiguration(shadowRuntimeElements) { variant -> - variant.mapToOptional() - if (shadow.addShadowVariantIntoJavaComponent.get()) { - logger.info("Adding {} variant to Java component.", shadowRuntimeElements.name) - } else { - logger.info("Skipping adding {} variant to Java component.", shadowRuntimeElements.name) - variant.skip() - } + component.addVariants( + outgoingConfiguration = shadowRuntimeElements, + logger = logger, + shouldAdd = shadow.addShadowVariantIntoJavaComponent::get, + ) { + mapToOptional() + } + } + } + + private fun AdhocComponentWithVariants.addVariants( + outgoingConfiguration: NamedDomainObjectProvider, + logger: Logger, + shouldAdd: () -> Boolean = { true }, + action: ConfigurationVariantDetails.() -> Unit, + ) { + addVariantsFromConfiguration(outgoingConfiguration) { variant -> + if (shouldAdd()) { + logger.info("Adding {} variant to {} component.", outgoingConfiguration.name, name) + variant.action() + } else { + logger.info("Skipping adding {} variant to {} component.", outgoingConfiguration.name, name) + variant.skip() } } }