@@ -5,13 +5,16 @@ import com.github.jengelman.gradle.plugins.shadow.internal.isAtLeastKgpVersion
5
5
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.SHADOW_JAR_TASK_NAME
6
6
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.registerShadowJarCommon
7
7
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.shadowJar
8
+ import kotlin.reflect.full.memberProperties
9
+ import kotlin.reflect.jvm.isAccessible
8
10
import org.gradle.api.Plugin
9
11
import org.gradle.api.Project
10
12
import org.gradle.api.plugins.ApplicationPlugin
11
13
import org.gradle.api.tasks.JavaExec
12
14
import org.gradle.api.tasks.bundling.Jar
13
15
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
14
16
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
17
+ import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmBinariesDsl
15
18
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
16
19
17
20
public abstract class ShadowKmpPlugin : Plugin <Project > {
@@ -59,13 +62,15 @@ public abstract class ShadowKmpPlugin : Plugin<Project> {
59
62
60
63
task.classpath = files(tasks.shadowJar)
61
64
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)
69
74
}
70
75
}
71
76
}
0 commit comments