File tree Expand file tree Collapse file tree 3 files changed +44
-3
lines changed
functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow
main/kotlin/com/github/jengelman/gradle/plugins/shadow/tasks Expand file tree Collapse file tree 3 files changed +44
-3
lines changed Original file line number Diff line number Diff line change 15
15
The Gradle Module descriptors (` org.codehaus.groovy.runtime.ExtensionModule ` files) defined under ` META-INF/services/ `
16
16
and ` META-INF/groovy ` will be merged into ` META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModule ` .
17
17
18
+ ### Fixed
19
+
20
+ - Fix excluding dependencies whose versions contain ` + ` . ([ #1597 ] ( https://github.com/GradleUp/shadow/pull/1597 ) )
21
+
18
22
## [ 9.1.0] ( https://github.com/GradleUp/shadow/compare/9.1.0 ) - 2025-08-29
19
23
20
24
### Added
Original file line number Diff line number Diff line change 1
1
package com.github.jengelman.gradle.plugins.shadow
2
2
3
3
import assertk.assertThat
4
+ import com.github.jengelman.gradle.plugins.shadow.util.Issue
4
5
import com.github.jengelman.gradle.plugins.shadow.util.containsOnly
5
6
import kotlin.io.path.appendText
6
7
import kotlin.io.path.writeText
@@ -174,6 +175,32 @@ class FilteringTest : BasePluginTest() {
174
175
}
175
176
}
176
177
178
+ @Issue(
179
+ " https://github.com/GradleUp/shadow/issues/671" ,
180
+ )
181
+ @Test
182
+ fun filterProjectThatVersionContainsPlus () {
183
+ writeClientAndServerModules(
184
+ serverShadowBlock = """
185
+ dependencies {
186
+ exclude(project(':client'))
187
+ }
188
+ """ .trimIndent(),
189
+ )
190
+ path(" client/build.gradle" ).appendText(" version = '1.0.0+1'" )
191
+
192
+ run (serverShadowJarPath)
193
+
194
+ assertThat(outputServerShadowedJar).useAll {
195
+ containsOnly(
196
+ " server/" ,
197
+ " server/Server.class" ,
198
+ * junitEntries,
199
+ * manifestEntries,
200
+ )
201
+ }
202
+ }
203
+
177
204
@Test
178
205
fun excludeTransitiveProjectDependency () {
179
206
writeClientAndServerModules(
Original file line number Diff line number Diff line change @@ -109,9 +109,19 @@ public interface DependencyFilter : Serializable {
109
109
110
110
private fun Dependency.toSpec (): Spec <ResolvedDependency > {
111
111
return Spec <ResolvedDependency > { resolvedDependency ->
112
- (group == null || resolvedDependency.moduleGroup.matches(group!! .toRegex())) &&
113
- resolvedDependency.moduleName.matches(name.toRegex()) &&
114
- (version == null || resolvedDependency.moduleVersion.matches(version!! .toRegex()))
112
+ val groupMatch = group?.let {
113
+ it == resolvedDependency.moduleGroup || resolvedDependency.moduleGroup.matches(it.toRegex())
114
+ } ? : true
115
+ val nameMatch = name.let {
116
+ it == resolvedDependency.moduleName || resolvedDependency.moduleName.matches(it.toRegex())
117
+ }
118
+ val versionMatch = version?.let {
119
+ // Version like `1.0.0+1` can't be converted to regex directly because `+` is a special character in regex.
120
+ // So we check for exact match first, then fallback to regex match.
121
+ it == resolvedDependency.moduleVersion || resolvedDependency.moduleVersion.matches(it.toRegex())
122
+ } ? : true
123
+
124
+ groupMatch && nameMatch && versionMatch
115
125
}
116
126
}
117
127
}
You can’t perform that action at this time.
0 commit comments