11@file:Suppress(" UnstableApiUsage" )
22@file:OptIn(ExperimentalKotlinGradlePluginApi ::class , ExperimentalBCVApi ::class )
33
4+ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
45import com.google.devtools.ksp.gradle.KspAATask
56import com.javiersc.kotlin.kopy.args.KopyFunctions
67import common.*
@@ -135,6 +136,34 @@ tasks {
135136 }
136137 }
137138
139+ pluginManager.withPlugin(" com.gradleup.shadow" ) {
140+ // Register a shadowJar task for the default jvm target
141+ val mainCompilation = kotlin.jvm().compilations.getByName(" main" )
142+ val shadowJvmJar by
143+ registering(ShadowJar ::class ) {
144+ from(tasks.named(" jvmJar" ))
145+ // from(mainCompilation.output.allOutputs) -> allOutputs == classes + resources
146+ val runtimeDepConfig =
147+ project.configurations.getByName(mainCompilation.runtimeDependencyConfigurationName)
148+ configurations = listOf (runtimeDepConfig)
149+ archiveClassifier = " all"
150+ mergeServiceFiles()
151+ manifest {
152+ attributes[Attributes .Name .MAIN_CLASS .toString()] = libs.versions.app.mainclass
153+ }
154+ }
155+
156+ val buildExecutable by
157+ registering(ReallyExecJar ::class ) {
158+ jarFile = shadowJvmJar.flatMap { it.archiveFile }
159+ javaOpts = jvmRunArgs
160+ execJarFile = layout.buildDirectory.dir(" libs" ).map { it.file(" ${project.name} -app" ) }
161+ onlyIf { OperatingSystem .current().isUnix }
162+ }
163+
164+ build { finalizedBy(buildExecutable) }
165+ }
166+
138167 pluginManager.withPlugin(" org.jetbrains.kotlinx.binary-compatibility-validator" ) {
139168 configure<ApiValidationExtension > {
140169 ignoredPackages.add(" dev.suresh.test" )
@@ -144,22 +173,9 @@ tasks {
144173 }
145174
146175 withType<KotlinApiBuildTask >().configureEach {
147- // inputJar = named<Jar>("shadowJar ").flatMap { it.archiveFile }
176+ // inputJar = named<Jar>("shadowJvmJar ").flatMap { it.archiveFile }
148177 }
149178 }
150-
151- pluginManager.withPlugin(" com.gradleup.shadow" ) {
152- val buildExecutable by
153- registering(ReallyExecJar ::class ) {
154- jarFile = named<Jar >(" shadowJar" ).flatMap { it.archiveFile }
155- // javaOpts = application.applicationDefaultJvmArgs
156- javaOpts = named<JavaExec >(" run" ).get().jvmArgs
157- execJarFile = layout.buildDirectory.dir(" libs" ).map { it.file(" ${project.name} -app" ) }
158- onlyIf { OperatingSystem .current().isUnix }
159- }
160-
161- build { finalizedBy(buildExecutable) }
162- }
163179}
164180
165181var npmEnabled: String? by rootProject.extra
0 commit comments