@@ -18,6 +18,7 @@ import org.gradle.api.tasks.TaskContainer
1818import org.gradle.api.tasks.TaskProvider
1919import org.gradle.api.tasks.application.CreateStartScripts
2020import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator
21+ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
2122
2223/* *
2324 * A [Plugin] which packages and runs a project as a Java Application using the shadowed jar.
@@ -34,7 +35,6 @@ public abstract class ShadowApplicationPlugin : Plugin<Project> {
3435 }
3536
3637 protected open fun Project.addRunTask () {
37- val extension = applicationExtension
3838 tasks.register(SHADOW_RUN_TASK_NAME , JavaExec ::class .java) { task ->
3939 task.description = " Runs this project as a JVM application using the shadow jar"
4040 task.group = ApplicationPlugin .APPLICATION_GROUP
@@ -43,9 +43,21 @@ public abstract class ShadowApplicationPlugin : Plugin<Project> {
4343 i.destinationDir.resolve(" lib/${s.archiveFile.get().asFile.name} " )
4444 }
4545 task.classpath(jarFile)
46- task.mainModule.set(extension.mainModule)
47- task.mainClass.set(extension.mainClass)
48- task.jvmArguments.convention(provider { extension.applicationDefaultJvmArgs })
46+
47+ if (isKmpApplied) {
48+ extensions.getByType(KotlinMultiplatformExtension ::class .java).jvm().binaries {
49+ executable {
50+ task.mainModule.set(mainModule)
51+ task.mainClass.set(mainClass)
52+ task.jvmArguments.convention(applicationDefaultJvmArgs)
53+ }
54+ }
55+ } else {
56+ val extension = applicationExtension
57+ task.mainModule.set(extension.mainModule)
58+ task.mainClass.set(extension.mainClass)
59+ task.jvmArguments.convention(provider { extension.applicationDefaultJvmArgs })
60+ }
4961
5062 task.modularity.inferModulePath.convention(javaPluginExtension.modularity.inferModulePath)
5163 task.javaLauncher.convention(javaToolchainService.launcherFor(javaPluginExtension.toolchain))
0 commit comments