Skip to content

Commit aa38f7c

Browse files
committed
Add utbot-spring-analyzer-with-spring-shadow.jar
1 parent b420c5b commit aa38f7c

File tree

1 file changed

+44
-29
lines changed

1 file changed

+44
-29
lines changed
Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
12
import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer
23
import com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer
34

@@ -18,38 +19,62 @@ java {
1819
targetCompatibility = JavaVersion.VERSION_1_8
1920
}
2021

21-
val shadowConfiguration by configurations.creating {}
22+
val withoutSpringConfiguration by configurations.creating {}
23+
val withSpringConfiguration by configurations.creating {
24+
extendsFrom(withoutSpringConfiguration)
25+
}
26+
configurations.implementation.get().extendsFrom(withSpringConfiguration)
2227

2328
dependencies {
24-
fun shadowAndImplementation(dependencyNotation: Any) {
25-
shadowConfiguration(dependencyNotation)
26-
implementation(dependencyNotation)
27-
}
28-
2929
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot
30-
implementation("org.springframework.boot:spring-boot:$springBootVersion")
30+
withSpringConfiguration("org.springframework.boot:spring-boot:$springBootVersion")
3131

3232
implementation("io.github.microutils:kotlin-logging:$kotlinLoggingVersion")
3333

34-
shadowAndImplementation(project(":utbot-rd"))
35-
shadowAndImplementation(project(":utbot-core"))
36-
shadowAndImplementation(project(":utbot-framework-api"))
37-
shadowAndImplementation("com.jetbrains.rd:rd-framework:$rdVersion")
38-
shadowAndImplementation("com.jetbrains.rd:rd-core:$rdVersion")
39-
shadowAndImplementation("commons-logging:commons-logging:$commonsLoggingVersion")
40-
shadowAndImplementation("commons-io:commons-io:$commonsIOVersion")
41-
}
34+
fun ModuleDependency.excludeSlf4jApi() = exclude(group = "org.slf4j", module = "slf4j-api")
4235

43-
shadowConfiguration.exclude(group = "org.slf4j", module = "slf4j-api")
36+
withoutSpringConfiguration(project(":utbot-rd")) { excludeSlf4jApi() }
37+
withoutSpringConfiguration(project(":utbot-core")) { excludeSlf4jApi() }
38+
withoutSpringConfiguration(project(":utbot-framework-api")) { excludeSlf4jApi() }
39+
withoutSpringConfiguration("com.jetbrains.rd:rd-framework:$rdVersion") { excludeSlf4jApi() }
40+
withoutSpringConfiguration("com.jetbrains.rd:rd-core:$rdVersion") { excludeSlf4jApi() }
41+
withoutSpringConfiguration("commons-logging:commons-logging:$commonsLoggingVersion") { excludeSlf4jApi() }
42+
withoutSpringConfiguration("commons-io:commons-io:$commonsIOVersion") { excludeSlf4jApi() }
43+
}
4444

4545
application {
4646
mainClass.set("org.utbot.spring.process.SpringAnalyzerProcessMainKt")
4747
}
4848

49-
// see more details about this task -- https://github.com/spring-projects/spring-boot/issues/1828
50-
tasks.shadowJar {
51-
this@shadowJar.configurations = listOf(shadowConfiguration)
49+
val shadowWithoutSpring by tasks.register<ShadowJar>("shadowJarWithoutSpring") {
50+
configureShadowJar(withoutSpringConfiguration)
51+
archiveFileName.set("utbot-spring-analyzer-shadow.jar")
52+
}
53+
54+
val shadowWithSpring by tasks.register<ShadowJar>("shadowJarWithSpring") {
55+
configureShadowJar(withSpringConfiguration)
56+
archiveFileName.set("utbot-spring-analyzer-with-spring-shadow.jar")
57+
}
5258

59+
val springAnalyzerJar: Configuration by configurations.creating {
60+
isCanBeResolved = false
61+
isCanBeConsumed = true
62+
}
63+
64+
artifacts {
65+
add(springAnalyzerJar.name, shadowWithoutSpring)
66+
add(springAnalyzerJar.name, shadowWithSpring)
67+
}
68+
69+
fun ShadowJar.configureShadowJar(configuration: Configuration) {
70+
// see more details -- https://github.com/johnrengelman/shadow/blob/master/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy
71+
group = "shadow"
72+
from(sourceSets.main.get().output)
73+
exclude("META-INF/INDEX.LIST", "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "module-info.class")
74+
75+
configurations = listOf(configuration)
76+
77+
// see more details -- https://github.com/spring-projects/spring-boot/issues/1828
5378
isZip64 = true
5479
// Required for Spring
5580
mergeServiceFiles()
@@ -62,14 +87,4 @@ tasks.shadowJar {
6287
})
6388

6489
transform(Log4j2PluginsCacheFileTransformer::class.java)
65-
archiveFileName.set("utbot-spring-analyzer-shadow.jar")
66-
}
67-
68-
val springAnalyzerJar: Configuration by configurations.creating {
69-
isCanBeResolved = false
70-
isCanBeConsumed = true
71-
}
72-
73-
artifacts {
74-
add(springAnalyzerJar.name, tasks.shadowJar)
7590
}

0 commit comments

Comments
 (0)