Skip to content

Commit f4874ab

Browse files
committed
fix(buildSrc): merge spring.factories safely in smoke test fat jars
Use Shadow AppendingTransformer with an explicit newline separator and include duplicate spring.factories inputs so all Spring Boot auto-configuration entries are preserved and properly delimited during merge. This prevents malformed merged META-INF/spring.factories content that broke smoke test app startup (e.g., missing servlet web server auto-config).
1 parent 4d1f6b2 commit f4874ab

1 file changed

Lines changed: 9 additions & 7 deletions

File tree

buildSrc/src/main/kotlin/ai.smoke-test-jar.gradle.kts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2-
import com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer
2+
import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer
33
import com.microsoft.applicationinsights.gradle.AiSmokeTestExtension
44

55
plugins {
@@ -15,13 +15,15 @@ val aiSmokeTest = extensions.getByType(AiSmokeTestExtension::class)
1515
tasks.named<ShadowJar>("shadowJar") {
1616
archiveClassifier.set("")
1717
mergeServiceFiles()
18+
19+
filesMatching("META-INF/spring.factories") {
20+
duplicatesStrategy = DuplicatesStrategy.INCLUDE
21+
}
1822

19-
// Properly merge spring.factories files from all dependencies
20-
// This is required for Spring Boot auto-configuration to work
21-
// Use PropertiesFileTransformer to merge duplicate keys instead of simple append
22-
transform(PropertiesFileTransformer::class.java) {
23-
paths = listOf("META-INF/spring.factories")
24-
mergeStrategy = PropertiesFileTransformer.MergeStrategy.Append
23+
// Keep entries newline-delimited; malformed spring.factories breaks auto-configuration.
24+
transform(AppendingTransformer::class.java) {
25+
resource = "META-INF/spring.factories"
26+
separator = "\n"
2527
}
2628

2729
// Set main class - can be overridden by individual projects via mainClassName property

0 commit comments

Comments
 (0)