@@ -18,6 +18,7 @@ import org.gradle.api.tasks.TaskContainer
18
18
import org.gradle.api.tasks.TaskProvider
19
19
import org.gradle.api.tasks.application.CreateStartScripts
20
20
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator
21
+ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
21
22
22
23
/* *
23
24
* 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> {
34
35
}
35
36
36
37
protected open fun Project.addRunTask () {
37
- val extension = applicationExtension
38
38
tasks.register(SHADOW_RUN_TASK_NAME , JavaExec ::class .java) { task ->
39
39
task.description = " Runs this project as a JVM application using the shadow jar"
40
40
task.group = ApplicationPlugin .APPLICATION_GROUP
@@ -43,9 +43,21 @@ public abstract class ShadowApplicationPlugin : Plugin<Project> {
43
43
i.destinationDir.resolve(" lib/${s.archiveFile.get().asFile.name} " )
44
44
}
45
45
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
+ }
49
61
50
62
task.modularity.inferModulePath.convention(javaPluginExtension.modularity.inferModulePath)
51
63
task.javaLauncher.convention(javaToolchainService.launcherFor(javaPluginExtension.toolchain))
0 commit comments