11package com.github.jengelman.gradle.plugins.shadow
22
3- import com.github.jengelman.gradle.plugins.shadow.ShadowApplicationPlugin.Companion.SHADOW_RUN_TASK_NAME
3+ import com.github.jengelman.gradle.plugins.shadow.ShadowApplicationPlugin.Companion.registerRunShadowCommon
44import 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
7- import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.shadowJar
87import org.gradle.api.Plugin
98import org.gradle.api.Project
10- import org.gradle.api.plugins.ApplicationPlugin
119import org.gradle.api.tasks.JavaExec
1210import org.gradle.api.tasks.bundling.Jar
1311import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
@@ -27,7 +25,14 @@ public abstract class ShadowKmpPlugin : Plugin<Project> {
2725 }
2826
2927 configureShadowJar(target)
30- addRunTask(target)
28+ }
29+
30+ // TODO: https://youtrack.jetbrains.com/issue/KT-77499
31+ afterEvaluate {
32+ if (! isAtLeastKgpVersion(2 , 1 , 20 )) return @afterEvaluate
33+ @Suppress(" EagerGradleConfiguration" ) // TODO: https://issuetracker.google.com/issues/444825893
34+ val runJvmTask = tasks.findByName(" runJvm" ) as ? JavaExec ? : return @afterEvaluate
35+ addRunTask(runJvmTask)
3136 }
3237 }
3338
@@ -50,22 +55,14 @@ public abstract class ShadowKmpPlugin : Plugin<Project> {
5055 }
5156 }
5257
53- private fun Project.addRunTask (target : KotlinJvmTarget ) {
54- if (! isAtLeastKgpVersion(2 , 1 , 20 )) return
55-
56- tasks.register(SHADOW_RUN_TASK_NAME , JavaExec ::class .java) { task ->
57- task.description = " Runs this project as a JVM application using the shadow jar"
58- task.group = ApplicationPlugin .APPLICATION_GROUP
59-
60- task.classpath = files(tasks.shadowJar)
61-
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- }
58+ private fun Project.addRunTask (runJvmTask : JavaExec ) {
59+ registerRunShadowCommon { task ->
60+ with (runJvmTask) {
61+ task.mainModule.convention(mainModule)
62+ task.mainClass.convention(mainClass)
63+ task.jvmArguments.convention(jvmArguments)
64+ task.modularity.inferModulePath.convention(modularity.inferModulePath)
65+ task.javaLauncher.convention(javaLauncher)
6966 }
7067 }
7168 }
0 commit comments