From 7cf7b6e4d28cd178c7c99b72b6529bd5cce06de9 Mon Sep 17 00:00:00 2001 From: Goooler Date: Mon, 17 Nov 2025 18:01:46 +0800 Subject: [PATCH] Mark `SimpleRelocator` extends `PatternFilterable` --- api/shadow.api | 23 +++++++++++----- .../shadow/relocation/SimpleRelocator.kt | 26 ++++++++++++------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/api/shadow.api b/api/shadow.api index ed46f45a4..406ad8601 100644 --- a/api/shadow.api +++ b/api/shadow.api @@ -127,27 +127,36 @@ public abstract interface class com/github/jengelman/gradle/plugins/shadow/reloc public abstract fun relocatePath (Lcom/github/jengelman/gradle/plugins/shadow/relocation/RelocatePathContext;)Ljava/lang/String; } -public class com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator : com/github/jengelman/gradle/plugins/shadow/relocation/Relocator { +public class com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator : com/github/jengelman/gradle/plugins/shadow/relocation/Relocator, org/gradle/api/tasks/util/PatternFilterable { public fun ()V public fun (Ljava/lang/String;)V public fun (Ljava/lang/String;Ljava/lang/String;)V public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Z)V - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZZ)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZLorg/gradle/api/tasks/util/PatternSet;)V + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZLorg/gradle/api/tasks/util/PatternSet;Z)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ZLorg/gradle/api/tasks/util/PatternSet;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun applyToSourceContent (Ljava/lang/String;)Ljava/lang/String; public fun canRelocateClass (Ljava/lang/String;)Z public fun canRelocatePath (Ljava/lang/String;)Z public fun equals (Ljava/lang/Object;)Z - public fun exclude (Ljava/lang/String;)V - public final fun getExcludes ()Ljava/util/Set; - public final fun getIncludes ()Ljava/util/Set; + public fun exclude (Lgroovy/lang/Closure;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun exclude (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun exclude (Lorg/gradle/api/specs/Spec;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun exclude ([Ljava/lang/String;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun getExcludes ()Ljava/util/Set; + public fun getIncludes ()Ljava/util/Set; public fun getSkipStringConstants ()Z public fun hashCode ()I - public fun include (Ljava/lang/String;)V + public fun include (Lgroovy/lang/Closure;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun include (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun include (Lorg/gradle/api/specs/Spec;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun include ([Ljava/lang/String;)Lorg/gradle/api/tasks/util/PatternFilterable; public fun relocateClass (Lcom/github/jengelman/gradle/plugins/shadow/relocation/RelocateClassContext;)Ljava/lang/String; public fun relocatePath (Lcom/github/jengelman/gradle/plugins/shadow/relocation/RelocatePathContext;)Ljava/lang/String; + public fun setExcludes (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable; + public fun setIncludes (Ljava/lang/Iterable;)Lorg/gradle/api/tasks/util/PatternFilterable; public fun setSkipStringConstants (Z)V public fun toString ()Ljava/lang/String; } diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator.kt index b4519f995..a616bb557 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocator.kt @@ -5,6 +5,8 @@ import java.util.regex.Pattern import org.apache.commons.io.FilenameUtils import org.codehaus.plexus.util.SelectorUtils import org.gradle.api.tasks.Input +import org.gradle.api.tasks.util.PatternFilterable +import org.gradle.api.tasks.util.PatternSet /** * Modified from [org.apache.maven.plugins.shade.relocation.SimpleRelocator.java](https://github.com/apache/maven-shade-plugin/blob/master/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java). @@ -20,8 +22,10 @@ public open class SimpleRelocator @JvmOverloads constructor( includes: List? = null, excludes: List? = null, private val rawString: Boolean = false, + private val patternSet: PatternSet = PatternSet(), @get:Input override var skipStringConstants: Boolean = false, -) : Relocator { +) : Relocator, + PatternFilterable by patternSet { private val pattern: String private val pathPattern: String private val shadedPattern: String @@ -29,11 +33,11 @@ public open class SimpleRelocator @JvmOverloads constructor( private val sourcePackageExcludes = mutableSetOf() private val sourcePathExcludes = mutableSetOf() - @get:Input - public val includes: MutableSet = mutableSetOf() + @Input // Trigger task executions after includes changed. + override fun getIncludes(): MutableSet = patternSet.includes - @get:Input - public val excludes: MutableSet = mutableSetOf() + @Input // Trigger task executions after excludes changed. + override fun getExcludes(): MutableSet = patternSet.excludes init { if (rawString) { @@ -87,12 +91,16 @@ public open class SimpleRelocator @JvmOverloads constructor( } } - public open fun include(pattern: String) { - includes.addAll(normalizePatterns(listOf(pattern))) + override fun include(vararg includes: String): PatternFilterable = apply { + includes.forEach { include -> + getIncludes().addAll(normalizePatterns(listOf(include))) + } } - public open fun exclude(pattern: String) { - excludes.addAll(normalizePatterns(listOf(pattern))) + override fun exclude(vararg excludes: String): PatternFilterable = apply { + excludes.forEach { exclude -> + getExcludes().addAll(normalizePatterns(listOf(exclude))) + } } override fun canRelocatePath(path: String): Boolean {