Skip to content

Commit d373be1

Browse files
authored
Resolve Configuration directly in DependencyFilter (#1045)
1 parent d5e3cec commit d373be1

File tree

5 files changed

+14
-11
lines changed

5 files changed

+14
-11
lines changed

api/shadow.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public abstract interface class com/github/jengelman/gradle/plugins/shadow/inter
100100
public abstract fun project (Ljava/lang/String;)Lorg/gradle/api/specs/Spec;
101101
public abstract fun project (Ljava/util/Map;)Lorg/gradle/api/specs/Spec;
102102
public abstract fun resolve (Ljava/util/Collection;)Lorg/gradle/api/file/FileCollection;
103-
public abstract fun resolve (Lorg/gradle/api/file/FileCollection;)Lorg/gradle/api/file/FileCollection;
103+
public abstract fun resolve (Lorg/gradle/api/artifacts/Configuration;)Lorg/gradle/api/file/FileCollection;
104104
}
105105

106106
public abstract interface class com/github/jengelman/gradle/plugins/shadow/internal/ZipCompressor : org/gradle/api/internal/file/archive/compression/ArchiveOutputStreamFactory {

src/docs/changes/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
**Changed**
1111

1212
- **BREAKING CHANGE:** Rewrite this plugin in Kotlin. ([#1012](https://github.com/GradleUp/shadow/pull/1012))
13+
- **BREAKING CHANGE:** Resolve `Configuration` directly in `DependencyFilter`. ([#1045](https://github.com/GradleUp/shadow/pull/1045))
1314

1415
**Removed**
1516

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@ internal sealed class AbstractDependencyFilter(
2222
excludedDependencies: MutableSet<ResolvedDependency>,
2323
)
2424

25-
override fun resolve(configuration: FileCollection): FileCollection {
25+
override fun resolve(configuration: Configuration): FileCollection {
2626
val includedDeps = mutableSetOf<ResolvedDependency>()
2727
val excludedDeps = mutableSetOf<ResolvedDependency>()
28-
configuration as Configuration
2928
resolve(configuration.resolvedConfiguration.firstLevelModuleDependencies, includedDeps, excludedDeps)
3029
return project.files(configuration.files) -
3130
project.files(excludedDeps.flatMap { it.moduleArtifacts.map(ResolvedArtifact::getFile) })
3231
}
3332

34-
override fun resolve(configurations: Collection<FileCollection>): FileCollection {
33+
override fun resolve(configurations: Collection<Configuration>): FileCollection {
3534
return configurations.map { resolve(it) }
3635
.reduceOrNull { acc, fileCollection -> acc + fileCollection }
3736
?: project.files()

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.github.jengelman.gradle.plugins.shadow.internal
22

33
import groovy.lang.Closure
4+
import org.gradle.api.artifacts.Configuration
45
import org.gradle.api.artifacts.Dependency
56
import org.gradle.api.artifacts.ResolvedDependency
67
import org.gradle.api.file.FileCollection
78
import org.gradle.api.specs.Spec
89

910
public interface DependencyFilter {
1011
/**
11-
* Resolve a FileCollection against the include/exclude rules in the filter.
12+
* Resolve a [Configuration] against the include/exclude rules in the filter.
1213
*/
13-
public fun resolve(configuration: FileCollection): FileCollection
14+
public fun resolve(configuration: Configuration): FileCollection
1415

1516
/**
16-
* Resolve all FileCollections against the include/exclude rules in the filter and combine the results.
17+
* Resolve all [Configuration]s against the include/exclude rules in the filter and combine the results.
1718
*/
18-
public fun resolve(configurations: Collection<FileCollection>): FileCollection
19+
public fun resolve(configurations: Collection<Configuration>): FileCollection
1920

2021
/**
2122
* Exclude dependencies that match the provided spec.

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import java.util.concurrent.Callable
2020
import java.util.jar.JarFile
2121
import org.apache.tools.zip.ZipOutputStream
2222
import org.gradle.api.Action
23+
import org.gradle.api.artifacts.Configuration
2324
import org.gradle.api.file.DuplicatesStrategy
2425
import org.gradle.api.file.FileCollection
2526
import org.gradle.api.internal.DocumentationRegistry
@@ -47,7 +48,7 @@ public abstract class ShadowJar :
4748
ShadowSpec {
4849
private val _transformers = mutableListOf<Transformer>()
4950
private val _relocators = mutableListOf<Relocator>()
50-
private val _configurations = mutableListOf<FileCollection>()
51+
private val _configurations = mutableListOf<Configuration>()
5152
private val _stats = ShadowStats()
5253
private val _includedDependencies = project.files(Callable { _dependencyFilter.resolve(_configurations) })
5354

@@ -158,7 +159,7 @@ public abstract class ShadowJar :
158159

159160
@get:Classpath
160161
@get:Optional
161-
public var configurations: List<FileCollection>
162+
public var configurations: List<Configuration>
162163
get() = _configurations
163164
set(value) {
164165
_configurations.clear()
@@ -327,7 +328,8 @@ public abstract class ShadowJar :
327328

328329
private fun configureRelocation() {
329330
val packages = mutableSetOf<String>()
330-
configurations.forEach { configuration ->
331+
// Must cast configurations to List<FileCollection> to fix type mismatch in runtime.
332+
(configurations as List<FileCollection>).forEach { configuration ->
331333
configuration.files.forEach { jarFile ->
332334
JarFile(jarFile).use { jf ->
333335
jf.entries().asSequence().forEach { entry ->

0 commit comments

Comments
 (0)