Skip to content

Commit ce7c148

Browse files
authored
Merge dependency and project overloads in DependencyFilter (#1328)
They are merged to accept `Any`.
1 parent 8aa41ea commit ce7c148

File tree

4 files changed

+20
-42
lines changed

4 files changed

+20
-42
lines changed

api/shadow.api

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,9 @@ public class com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocat
150150

151151
public abstract interface class com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter : java/io/Serializable {
152152
public abstract fun dependency (Ljava/lang/Object;)Lorg/gradle/api/specs/Spec;
153-
public abstract fun dependency (Lorg/gradle/api/artifacts/Dependency;)Lorg/gradle/api/specs/Spec;
154153
public abstract fun exclude (Lorg/gradle/api/specs/Spec;)V
155154
public abstract fun include (Lorg/gradle/api/specs/Spec;)V
156155
public abstract fun project (Ljava/lang/Object;)Lorg/gradle/api/specs/Spec;
157-
public abstract fun project (Ljava/lang/String;)Lorg/gradle/api/specs/Spec;
158-
public abstract fun project (Ljava/util/Map;)Lorg/gradle/api/specs/Spec;
159156
public abstract fun resolve (Ljava/util/Collection;)Lorg/gradle/api/file/FileCollection;
160157
public abstract fun resolve (Lorg/gradle/api/artifacts/Configuration;)Lorg/gradle/api/file/FileCollection;
161158
}

docs/changes/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020

2121
- Fix relocation exclusion for file patterns like `kotlin/kotlin.kotlin_builtins`. ([#1313](https://github.com/GradleUp/shadow/pull/1313))
2222

23+
**Removed**
24+
25+
- **BREAKING CHANGE:** Reduce dependency and project overloads in `DependencyFilter`. ([#1328](https://github.com/GradleUp/shadow/pull/1328))
26+
2327

2428
## [v9.0.0-beta10] (2025-03-05)
2529

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/AbstractDependencyFilter.kt

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,42 +47,35 @@ internal sealed class AbstractDependencyFilter(
4747

4848
override fun project(notation: Any): Spec<ResolvedDependency> {
4949
@Suppress("UNCHECKED_CAST")
50-
return when (notation) {
51-
is ProjectDependency -> dependency(notation)
52-
is Provider<*> -> project(notation.get() as String)
53-
is String -> project(notation)
54-
is Map<*, *> -> project(notation as Map<String, *>)
55-
else -> error("Unsupported notation type: ${notation::class.java}")
50+
val realNotation = when (notation) {
51+
is ProjectDependency -> return notation.toSpec()
52+
is Provider<*> -> mapOf("path" to notation.get())
53+
is String -> mapOf("path" to notation)
54+
is Map<*, *> -> notation as Map<String, Any>
55+
else -> throw IllegalArgumentException("Unsupported notation type: ${notation::class.java}")
5656
}
57-
}
58-
59-
override fun project(notation: Map<String, *>): Spec<ResolvedDependency> {
60-
return dependency(project.dependencies.project(notation))
61-
}
62-
63-
override fun project(path: String): Spec<ResolvedDependency> {
64-
return project(mapOf("path" to path))
57+
return project.dependencies.project(realNotation).toSpec()
6558
}
6659

6760
override fun dependency(dependencyNotation: Any): Spec<ResolvedDependency> {
6861
val realNotation = when (dependencyNotation) {
6962
is Provider<*> -> dependencyNotation.get()
7063
else -> dependencyNotation
7164
}
72-
return dependency(project.dependencies.create(realNotation))
73-
}
74-
75-
override fun dependency(dependency: Dependency): Spec<ResolvedDependency> {
76-
return Spec<ResolvedDependency> { resolvedDependency ->
77-
(dependency.group == null || resolvedDependency.moduleGroup.matches(dependency.group!!.toRegex())) &&
78-
resolvedDependency.moduleName.matches(dependency.name.toRegex()) &&
79-
(dependency.version == null || resolvedDependency.moduleVersion.matches(dependency.version!!.toRegex()))
80-
}
65+
return project.dependencies.create(realNotation).toSpec()
8166
}
8267

8368
protected fun ResolvedDependency.isIncluded(): Boolean {
8469
val include = includeSpecs.isEmpty() || includeSpecs.any { it.isSatisfiedBy(this) }
8570
val exclude = excludeSpecs.isNotEmpty() && excludeSpecs.any { it.isSatisfiedBy(this) }
8671
return include && !exclude
8772
}
73+
74+
private fun Dependency.toSpec(): Spec<ResolvedDependency> {
75+
return Spec<ResolvedDependency> { resolvedDependency ->
76+
(group == null || resolvedDependency.moduleGroup.matches(group!!.toRegex())) &&
77+
resolvedDependency.moduleName.matches(name.toRegex()) &&
78+
(version == null || resolvedDependency.moduleVersion.matches(version!!.toRegex()))
79+
}
80+
}
8881
}

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks/DependencyFilter.kt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.github.jengelman.gradle.plugins.shadow.tasks
22

33
import java.io.Serializable
44
import org.gradle.api.artifacts.Configuration
5-
import org.gradle.api.artifacts.Dependency
65
import org.gradle.api.artifacts.ResolvedDependency
76
import org.gradle.api.file.FileCollection
87
import org.gradle.api.specs.Spec
@@ -34,23 +33,8 @@ public interface DependencyFilter : Serializable {
3433
*/
3534
public fun project(notation: Any): Spec<ResolvedDependency>
3635

37-
/**
38-
* Create a [Spec] that matches the provided project [notation].
39-
*/
40-
public fun project(notation: Map<String, *>): Spec<ResolvedDependency>
41-
42-
/**
43-
* Create a [Spec] that matches the provided project [path].
44-
*/
45-
public fun project(path: String): Spec<ResolvedDependency>
46-
4736
/**
4837
* Create a [Spec] that matches the provided [dependencyNotation].
4938
*/
5039
public fun dependency(dependencyNotation: Any): Spec<ResolvedDependency>
51-
52-
/**
53-
* Create a [Spec] that matches the provided [dependency].
54-
*/
55-
public fun dependency(dependency: Dependency): Spec<ResolvedDependency>
5640
}

0 commit comments

Comments
 (0)