diff --git a/api/shadow.api b/api/shadow.api index 907cb3006..eb5e4c6ce 100644 --- a/api/shadow.api +++ b/api/shadow.api @@ -150,12 +150,9 @@ public class com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocat public abstract interface class com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter : java/io/Serializable { public abstract fun dependency (Ljava/lang/Object;)Lorg/gradle/api/specs/Spec; - public abstract fun dependency (Lorg/gradle/api/artifacts/Dependency;)Lorg/gradle/api/specs/Spec; public abstract fun exclude (Lorg/gradle/api/specs/Spec;)V public abstract fun include (Lorg/gradle/api/specs/Spec;)V public abstract fun project (Ljava/lang/Object;)Lorg/gradle/api/specs/Spec; - public abstract fun project (Ljava/lang/String;)Lorg/gradle/api/specs/Spec; - public abstract fun project (Ljava/util/Map;)Lorg/gradle/api/specs/Spec; public abstract fun resolve (Ljava/util/Collection;)Lorg/gradle/api/file/FileCollection; public abstract fun resolve (Lorg/gradle/api/artifacts/Configuration;)Lorg/gradle/api/file/FileCollection; } diff --git a/docs/changes/README.md b/docs/changes/README.md index 226935ee1..fe4105901 100644 --- a/docs/changes/README.md +++ b/docs/changes/README.md @@ -20,6 +20,10 @@ - Fix relocation exclusion for file patterns like `kotlin/kotlin.kotlin_builtins`. ([#1313](https://github.com/GradleUp/shadow/pull/1313)) +**Removed** + +- **BREAKING CHANGE:** Reduce dependency and project overloads in `DependencyFilter`. ([#1328](https://github.com/GradleUp/shadow/pull/1328)) + ## [v9.0.0-beta10] (2025-03-05) diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/AbstractDependencyFilter.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/AbstractDependencyFilter.kt index a81189fef..9743ccbf4 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/AbstractDependencyFilter.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/AbstractDependencyFilter.kt @@ -47,21 +47,14 @@ internal sealed class AbstractDependencyFilter( override fun project(notation: Any): Spec { @Suppress("UNCHECKED_CAST") - return when (notation) { - is ProjectDependency -> dependency(notation) - is Provider<*> -> project(notation.get() as String) - is String -> project(notation) - is Map<*, *> -> project(notation as Map) - else -> error("Unsupported notation type: ${notation::class.java}") + val realNotation = when (notation) { + is ProjectDependency -> return notation.toSpec() + is Provider<*> -> mapOf("path" to notation.get()) + is String -> mapOf("path" to notation) + is Map<*, *> -> notation as Map + else -> throw IllegalArgumentException("Unsupported notation type: ${notation::class.java}") } - } - - override fun project(notation: Map): Spec { - return dependency(project.dependencies.project(notation)) - } - - override fun project(path: String): Spec { - return project(mapOf("path" to path)) + return project.dependencies.project(realNotation).toSpec() } override fun dependency(dependencyNotation: Any): Spec { @@ -69,15 +62,7 @@ internal sealed class AbstractDependencyFilter( is Provider<*> -> dependencyNotation.get() else -> dependencyNotation } - return dependency(project.dependencies.create(realNotation)) - } - - override fun dependency(dependency: Dependency): Spec { - return Spec { resolvedDependency -> - (dependency.group == null || resolvedDependency.moduleGroup.matches(dependency.group!!.toRegex())) && - resolvedDependency.moduleName.matches(dependency.name.toRegex()) && - (dependency.version == null || resolvedDependency.moduleVersion.matches(dependency.version!!.toRegex())) - } + return project.dependencies.create(realNotation).toSpec() } protected fun ResolvedDependency.isIncluded(): Boolean { @@ -85,4 +70,12 @@ internal sealed class AbstractDependencyFilter( val exclude = excludeSpecs.isNotEmpty() && excludeSpecs.any { it.isSatisfiedBy(this) } return include && !exclude } + + private fun Dependency.toSpec(): Spec { + return Spec { resolvedDependency -> + (group == null || resolvedDependency.moduleGroup.matches(group!!.toRegex())) && + resolvedDependency.moduleName.matches(name.toRegex()) && + (version == null || resolvedDependency.moduleVersion.matches(version!!.toRegex())) + } + } } diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter.kt index cf74e3b23..d17f806ae 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter.kt @@ -2,7 +2,6 @@ package com.github.jengelman.gradle.plugins.shadow.tasks import java.io.Serializable import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ResolvedDependency import org.gradle.api.file.FileCollection import org.gradle.api.specs.Spec @@ -34,23 +33,8 @@ public interface DependencyFilter : Serializable { */ public fun project(notation: Any): Spec - /** - * Create a [Spec] that matches the provided project [notation]. - */ - public fun project(notation: Map): Spec - - /** - * Create a [Spec] that matches the provided project [path]. - */ - public fun project(path: String): Spec - /** * Create a [Spec] that matches the provided [dependencyNotation]. */ public fun dependency(dependencyNotation: Any): Spec - - /** - * Create a [Spec] that matches the provided [dependency]. - */ - public fun dependency(dependency: Dependency): Spec }