Skip to content

Commit 9a388af

Browse files
romtsnclaude
andcommitted
fix(spring-boot2): make mergeSpringMetadata configuration-cache compatible
Resolve the runtime classpath at configuration time (not inside doLast) so the task doesn't capture Gradle script object references that can't be serialized by the configuration cache. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0a95998 commit 9a388af

File tree

5 files changed

+25
-35
lines changed

5 files changed

+25
-35
lines changed

sentry-samples/sentry-samples-netflix-dgs/build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ dependencies {
4343
val mergeSpringMetadata by
4444
tasks.registering {
4545
val outputDir = project.layout.buildDirectory.dir("merged-spring-metadata/META-INF")
46+
val classpathJars = configurations.runtimeClasspath.get().filter { it.name.endsWith(".jar") }
4647
val filesToMerge =
4748
listOf(
4849
"spring.factories",
@@ -51,16 +52,13 @@ val mergeSpringMetadata by
5152
"spring-autoconfigure-metadata.properties",
5253
)
5354
outputs.dir(outputDir)
54-
inputs.files(configurations.runtimeClasspath)
55+
inputs.files(classpathJars)
5556
doLast {
5657
val out = outputDir.get().asFile
5758
out.mkdirs()
5859
filesToMerge.forEach { fileName ->
5960
val merged = StringBuilder()
60-
configurations.runtimeClasspath
61-
.get()
62-
.filter { it.name.endsWith(".jar") }
63-
.forEach { jar ->
61+
classpathJars.forEach { jar ->
6462
try {
6563
val zip = ZipFile(jar)
6664
val entry = zip.getEntry("META-INF/$fileName")

sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ dependencies {
8484
val mergeSpringMetadata by
8585
tasks.registering {
8686
val outputDir = project.layout.buildDirectory.dir("merged-spring-metadata/META-INF")
87+
val classpathJars = configurations.runtimeClasspath.get().filter { it.name.endsWith(".jar") }
8788
val filesToMerge =
8889
listOf(
8990
"spring.factories",
@@ -92,16 +93,13 @@ val mergeSpringMetadata by
9293
"spring-autoconfigure-metadata.properties",
9394
)
9495
outputs.dir(outputDir)
95-
inputs.files(configurations.runtimeClasspath)
96+
inputs.files(classpathJars)
9697
doLast {
9798
val out = outputDir.get().asFile
9899
out.mkdirs()
99100
filesToMerge.forEach { fileName ->
100101
val merged = StringBuilder()
101-
configurations.runtimeClasspath
102-
.get()
103-
.filter { it.name.endsWith(".jar") }
104-
.forEach { jar ->
102+
classpathJars.forEach { jar ->
105103
try {
106104
val zip = ZipFile(jar)
107105
val entry = zip.getEntry("META-INF/$fileName")

sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ dependencies {
8080
val mergeSpringMetadata by
8181
tasks.registering {
8282
val outputDir = project.layout.buildDirectory.dir("merged-spring-metadata/META-INF")
83+
val classpathJars = configurations.runtimeClasspath.get().filter { it.name.endsWith(".jar") }
8384
val filesToMerge =
8485
listOf(
8586
"spring.factories",
@@ -88,16 +89,13 @@ val mergeSpringMetadata by
8889
"spring-autoconfigure-metadata.properties",
8990
)
9091
outputs.dir(outputDir)
91-
inputs.files(configurations.runtimeClasspath)
92+
inputs.files(classpathJars)
9293
doLast {
9394
val out = outputDir.get().asFile
9495
out.mkdirs()
9596
filesToMerge.forEach { fileName ->
9697
val merged = StringBuilder()
97-
configurations.runtimeClasspath
98-
.get()
99-
.filter { it.name.endsWith(".jar") }
100-
.forEach { jar ->
98+
classpathJars.forEach { jar ->
10199
try {
102100
val zip = ZipFile(jar)
103101
val entry = zip.getEntry("META-INF/$fileName")

sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ dependencies {
5353
val mergeSpringMetadata by
5454
tasks.registering {
5555
val outputDir = project.layout.buildDirectory.dir("merged-spring-metadata/META-INF")
56+
val classpathJars = configurations.runtimeClasspath.get().filter { it.name.endsWith(".jar") }
5657
val filesToMerge =
5758
listOf(
5859
"spring.factories",
@@ -61,16 +62,13 @@ val mergeSpringMetadata by
6162
"spring-autoconfigure-metadata.properties",
6263
)
6364
outputs.dir(outputDir)
64-
inputs.files(configurations.runtimeClasspath)
65+
inputs.files(classpathJars)
6566
doLast {
6667
val out = outputDir.get().asFile
6768
out.mkdirs()
6869
filesToMerge.forEach { fileName ->
6970
val merged = StringBuilder()
70-
configurations.runtimeClasspath
71-
.get()
72-
.filter { it.name.endsWith(".jar") }
73-
.forEach { jar ->
71+
classpathJars.forEach { jar ->
7472
try {
7573
val zip = ZipFile(jar)
7674
val entry = zip.getEntry("META-INF/$fileName")

sentry-samples/sentry-samples-spring-boot/build.gradle.kts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ dependencies {
8080
val mergeSpringMetadata by
8181
tasks.registering {
8282
val outputDir = project.layout.buildDirectory.dir("merged-spring-metadata/META-INF")
83+
val classpathJars = configurations.runtimeClasspath.get().filter { it.name.endsWith(".jar") }
8384
val filesToMerge =
8485
listOf(
8586
"spring.factories",
@@ -89,29 +90,26 @@ val mergeSpringMetadata by
8990
)
9091

9192
outputs.dir(outputDir)
92-
inputs.files(configurations.runtimeClasspath)
93+
inputs.files(classpathJars)
9394

9495
doLast {
9596
val out = outputDir.get().asFile
9697
out.mkdirs()
9798
filesToMerge.forEach { fileName ->
9899
val merged = StringBuilder()
99-
configurations.runtimeClasspath
100-
.get()
101-
.filter { it.name.endsWith(".jar") }
102-
.forEach { jar ->
103-
try {
104-
val zip = ZipFile(jar)
105-
val entry = zip.getEntry("META-INF/$fileName")
106-
if (entry != null) {
107-
merged.append(zip.getInputStream(entry).bufferedReader().readText())
108-
if (!merged.endsWith("\n")) merged.append("\n")
109-
}
110-
zip.close()
111-
} catch (e: Exception) {
112-
/* skip non-zip files */
100+
classpathJars.forEach { jar ->
101+
try {
102+
val zip = ZipFile(jar)
103+
val entry = zip.getEntry("META-INF/$fileName")
104+
if (entry != null) {
105+
merged.append(zip.getInputStream(entry).bufferedReader().readText())
106+
if (!merged.endsWith("\n")) merged.append("\n")
113107
}
108+
zip.close()
109+
} catch (e: Exception) {
110+
/* skip non-zip files */
114111
}
112+
}
115113
if (merged.isNotEmpty()) {
116114
File(out, fileName).writeText(merged.toString())
117115
}

0 commit comments

Comments
 (0)