Skip to content

Commit d9cfb5c

Browse files
committed
Try to get binariesDsl via reflection
1 parent d84c07f commit d9cfb5c

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowKmpPlugin.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ import com.github.jengelman.gradle.plugins.shadow.internal.isAtLeastKgpVersion
55
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.SHADOW_JAR_TASK_NAME
66
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.registerShadowJarCommon
77
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.shadowJar
8+
import kotlin.reflect.full.memberProperties
9+
import kotlin.reflect.jvm.isAccessible
810
import org.gradle.api.Plugin
911
import org.gradle.api.Project
1012
import org.gradle.api.plugins.ApplicationPlugin
1113
import org.gradle.api.tasks.JavaExec
1214
import org.gradle.api.tasks.bundling.Jar
1315
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
1416
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
17+
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmBinariesDsl
1518
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
1619

1720
public 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

Comments
 (0)