From 69027b45152e29c29f2c9b767272ee9987bd8005 Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 3 Sep 2026 17:12:08 +0800 Subject: [PATCH] Simplify apiJars/toMinimize/sourceSetsClassesDirs initializations --- .../plugins/shadow/internal/GradleCompat.kt | 3 ++ .../gradle/plugins/shadow/tasks/ShadowJar.kt | 36 ++++++++----------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/GradleCompat.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/GradleCompat.kt index a565aa0da..0256a1a56 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/GradleCompat.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/GradleCompat.kt @@ -35,6 +35,9 @@ internal inline val Project.runtimeConfiguration: Configuration internal inline val Project.sourceSets: SourceSetContainer get() = extensions.getByType(SourceSetContainer::class.java) +internal inline val Project.sourceSetsOrNull: SourceSetContainer? + get() = extensions.findByType(SourceSetContainer::class.java) + internal inline val Project.distributions: DistributionContainer get() = extensions.getByType(DistributionContainer::class.java) diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/ShadowJar.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/ShadowJar.kt index 5a4348690..cf18e2f8c 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/ShadowJar.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/ShadowJar.kt @@ -20,7 +20,7 @@ import com.github.jengelman.gradle.plugins.shadow.internal.minimizeWithR8 import com.github.jengelman.gradle.plugins.shadow.internal.multiReleaseAttributeKey import com.github.jengelman.gradle.plugins.shadow.internal.property import com.github.jengelman.gradle.plugins.shadow.internal.setProperty -import com.github.jengelman.gradle.plugins.shadow.internal.sourceSets +import com.github.jengelman.gradle.plugins.shadow.internal.sourceSetsOrNull import com.github.jengelman.gradle.plugins.shadow.internal.useZip import com.github.jengelman.gradle.plugins.shadow.relocation.CacheableRelocator import com.github.jengelman.gradle.plugins.shadow.relocation.Relocator @@ -113,32 +113,34 @@ public abstract class ShadowJar : Jar() { ) public open val minimizeJar: Property = objectFactory.property(false) + /** + * The configurations to include dependencies from. + * + * Defaults to a set that contains `runtimeClasspath` or `runtime` configuration. + */ + @get:Classpath + public open val configurations: SetProperty = objectFactory.setProperty() + /** Options for [minimize]. */ @get:Nested public open val minimizeSpec: MinimizeSpec = _minimizeSpec @get:Classpath public open val toMinimize: ConfigurableFileCollection = objectFactory.fileCollection { - _minimizeJar.map { - if (it) (_minimizeSpec.resolve(configurations.get()) - apiJars) else emptySet() - } + configurations.map { _minimizeSpec.resolve(it) - apiJars } } @get:Classpath public open val apiJars: ConfigurableFileCollection = objectFactory.fileCollection { - _minimizeJar.map { if (it) project.getApiJars() else emptySet() } + project.getApiJars() } @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) public open val sourceSetsClassesDirs: ConfigurableFileCollection = objectFactory.fileCollection { - _minimizeJar.map { - if (it) { - project.sourceSets.map { sourceSet -> - sourceSet.output.classesDirs.filter(File::isDirectory) - } - } else { - emptySet() - } + project.provider { + project.sourceSetsOrNull?.map { + it.output.classesDirs.filter(File::isDirectory) + } ?: emptySet() } } @@ -170,14 +172,6 @@ public abstract class ShadowJar : Jar() { /** [Relocator]s to be applied in the shadow steps. */ @get:Nested public open val relocators: SetProperty = objectFactory.setProperty() - /** - * The configurations to include dependencies from. - * - * Defaults to a set that contains `runtimeClasspath` or `runtime` configuration. - */ - @get:Classpath - public open val configurations: SetProperty = objectFactory.setProperty() - @get:Internal // The resolved result is tracked by includedDependencies. public open val dependencyFilter: Property = objectFactory.property(DefaultDependencyFilter(project))