@@ -5,13 +5,16 @@ import com.github.jengelman.gradle.plugins.shadow.internal.isAtLeastKgpVersion
55import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.SHADOW_JAR_TASK_NAME
66import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.registerShadowJarCommon
77import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.shadowJar
8+ import kotlin.reflect.full.memberProperties
9+ import kotlin.reflect.jvm.isAccessible
810import org.gradle.api.Plugin
911import org.gradle.api.Project
1012import org.gradle.api.plugins.ApplicationPlugin
1113import org.gradle.api.tasks.JavaExec
1214import org.gradle.api.tasks.bundling.Jar
1315import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
1416import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
17+ import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmBinariesDsl
1518import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
1619
1720public abstract class ShadowKmpPlugin : Plugin <Project > {
@@ -59,13 +62,15 @@ public abstract class ShadowKmpPlugin : Plugin<Project> {
5962
6063 task.classpath = files(tasks.shadowJar)
6164
62- @OptIn(ExperimentalKotlinGradlePluginApi ::class )
63- target.binaries {
64- executable { dsl ->
65- task.mainModule.set(dsl.mainModule)
66- task.mainClass.set(dsl.mainClass)
67- task.jvmArguments.convention(dsl.applicationDefaultJvmArgs)
68- }
65+ val binariesDsl = target::class .memberProperties
66+ .single { it.name == " binariesDsl" }
67+ .apply { isAccessible = true }
68+ .getter.call(target) as KotlinJvmBinariesDsl
69+
70+ binariesDsl.executable { dsl ->
71+ task.mainModule.set(dsl.mainModule)
72+ task.mainClass.set(dsl.mainClass)
73+ task.jvmArguments.convention(dsl.applicationDefaultJvmArgs)
6974 }
7075 }
7176 }
0 commit comments