Skip to content

Commit 94e46e4

Browse files
committed
Merge remote-tracking branch 'origin/main' into g/20250311/kotlin-new-app-block
// Conflicts: // src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.kt
2 parents 1bcf07c + d48c3fa commit 94e46e4

File tree

6 files changed

+51
-53
lines changed

6 files changed

+51
-53
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

docs/configuration/dependencies/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ method can be used to add extra files.
4242
// Merge foo.jar (with unzipping) into the shadowed JAR.
4343
implementation(files("foo.jar"))
4444
}
45+
4546
tasks.shadowJar {
4647
from("bar.jar") {
4748
// Copy bar.jar file (without unzipping) into META-INF/ in the shadowed JAR.
@@ -57,6 +58,7 @@ method can be used to add extra files.
5758
// Merge foo.jar (with unzipping) into the shadowed JAR.
5859
implementation files('foo.jar')
5960
}
61+
6062
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
6163
from('bar.jar') {
6264
// Copy bar.jar file (without unzipping) into META-INF/ in the shadowed JAR.
@@ -83,6 +85,7 @@ Gradle's `configurations` block.
8385
dependencies {
8486
implementation("org.apache.logging.log4j:log4j-core:2.11.1")
8587
}
88+
8689
tasks.shadowJar {
8790
dependencies {
8891
exclude(dependency("org.apache.logging.log4j:log4j-core:2.11.1"))
@@ -96,6 +99,7 @@ Gradle's `configurations` block.
9699
dependencies {
97100
implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
98101
}
102+
99103
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
100104
dependencies {
101105
exclude(dependency('org.apache.logging.log4j:log4j-core:2.11.1'))
@@ -109,6 +113,7 @@ Gradle's `configurations` block.
109113
dependencies {
110114
implementation(project(":api"))
111115
}
116+
112117
tasks.shadowJar {
113118
dependencies {
114119
exclude(dependency(":api"))
@@ -122,6 +127,7 @@ Gradle's `configurations` block.
122127
dependencies {
123128
implementation project(':api')
124129
}
130+
125131
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
126132
dependencies {
127133
exclude(project(':api'))
@@ -145,6 +151,7 @@ using any of these individual fields.
145151
dependencies {
146152
implementation("org.apache.logging.log4j:log4j-core:2.11.1")
147153
}
154+
148155
tasks.shadowJar {
149156
dependencies {
150157
exclude(dependency("org.apache.logging.log4j:log4j-core:.*"))
@@ -158,6 +165,7 @@ using any of these individual fields.
158165
dependencies {
159166
implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
160167
}
168+
161169
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
162170
dependencies {
163171
exclude(dependency('org.apache.logging.log4j:log4j-core:.*'))
@@ -173,6 +181,7 @@ Any of the individual fields can be safely absent and will function as though a
173181
dependencies {
174182
implementation("org.apache.logging.log4j:log4j-core:2.11.1")
175183
}
184+
176185
tasks.shadowJar {
177186
dependencies {
178187
exclude(dependency(":org.apache.logging.log4j:log4j-core"))
@@ -186,6 +195,7 @@ Any of the individual fields can be safely absent and will function as though a
186195
dependencies {
187196
implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
188197
}
198+
189199
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
190200
dependencies {
191201
exclude(dependency('org.apache.logging.log4j:log4j-core'))
@@ -203,6 +213,7 @@ This same pattern can be used for any of the dependency notation fields.
203213
dependencies {
204214
implementation("org.apache.logging.log4j:log4j-core:2.11.1")
205215
}
216+
206217
tasks.shadowJar {
207218
dependencies {
208219
exclude(dependency(":log4j-core:2.11.1"))
@@ -216,6 +227,7 @@ This same pattern can be used for any of the dependency notation fields.
216227
dependencies {
217228
implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
218229
}
230+
219231
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
220232
dependencies {
221233
exclude(dependency(':log4j-core:2.11.1'))
@@ -229,6 +241,7 @@ This same pattern can be used for any of the dependency notation fields.
229241
dependencies {
230242
implementation("org.apache.logging.log4j:log4j-core:2.11.1")
231243
}
244+
232245
tasks.shadowJar {
233246
dependencies {
234247
exclude(dependency("org.apache.logging.log4j:2.11.1"))
@@ -242,6 +255,7 @@ This same pattern can be used for any of the dependency notation fields.
242255
dependencies {
243256
implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
244257
}
258+
245259
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
246260
dependencies {
247261
exclude(dependency('org.apache.logging.log4j:2.11.1'))
@@ -262,6 +276,7 @@ You can also use type-safe project accessors or version catalog accessors to fil
262276
// Have to enable `TYPESAFE_PROJECT_ACCESSORS` flag in your settings.gradle.kts
263277
implementation(projects.api)
264278
}
279+
265280
tasks.shadowJar {
266281
dependencies {
267282
exclude(dependency(libs.log4j.core))
@@ -279,6 +294,7 @@ You can also use type-safe project accessors or version catalog accessors to fil
279294
// Have to enable `TYPESAFE_PROJECT_ACCESSORS` flag in your settings.gradle
280295
implementation projects.api
281296
}
297+
282298
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
283299
dependencies {
284300
exclude(dependency(libs.log4j.core))
@@ -299,6 +315,7 @@ block provides a method that accepts a `Closure` for selecting dependencies.
299315
dependencies {
300316
implementation("org.apache.logging.log4j:log4j-core:2.11.1")
301317
}
318+
302319
tasks.shadowJar {
303320
dependencies {
304321
exclude {
@@ -314,6 +331,7 @@ block provides a method that accepts a `Closure` for selecting dependencies.
314331
dependencies {
315332
implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
316333
}
334+
317335
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
318336
dependencies {
319337
exclude {

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@ public abstract class ShadowApplicationPlugin : Plugin<Project> {
5353
}
5454
}
5555
} else {
56-
val extension = applicationExtension
57-
task.mainModule.set(extension.mainModule)
58-
task.mainClass.set(extension.mainClass)
59-
task.jvmArguments.convention(provider { extension.applicationDefaultJvmArgs })
56+
with(applicationExtension) {
57+
task.mainModule.set(mainModule)
58+
task.mainClass.set(mainClass)
59+
task.jvmArguments.convention(provider { applicationDefaultJvmArgs })
60+
}
6061
}
6162

6263
task.modularity.inferModulePath.convention(javaPluginExtension.modularity.inferModulePath)
@@ -88,13 +89,14 @@ public abstract class ShadowApplicationPlugin : Plugin<Project> {
8889
}
8990
}
9091
} else {
91-
val extension = applicationExtension
92-
task.mainModule.set(extension.mainModule)
93-
task.mainClass.set(extension.mainClass)
94-
task.conventionMapping.map("applicationName", extension::getApplicationName)
95-
task.conventionMapping.map("outputDir") { layout.buildDirectory.dir("scriptsShadow").get().asFile }
96-
task.conventionMapping.map("executableDir", extension::getExecutableDir)
97-
task.conventionMapping.map("defaultJvmOpts", extension::getApplicationDefaultJvmArgs)
92+
with(applicationExtension) {
93+
task.mainModule.set(mainModule)
94+
task.mainClass.set(mainClass)
95+
task.conventionMapping.map("applicationName", ::getApplicationName)
96+
task.conventionMapping.map("outputDir") { layout.buildDirectory.dir("scriptsShadow").get().asFile }
97+
task.conventionMapping.map("executableDir", ::getExecutableDir)
98+
task.conventionMapping.map("defaultJvmOpts", ::getApplicationDefaultJvmArgs)
99+
}
98100
}
99101

100102
task.modularity.inferModulePath.convention(javaPluginExtension.modularity.inferModulePath)

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)