1
1
package com.github.jengelman.gradle.plugins.shadow
2
2
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
4
4
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
- import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.Companion.shadowJar
8
7
import org.gradle.api.Plugin
9
8
import org.gradle.api.Project
10
- import org.gradle.api.plugins.ApplicationPlugin
11
9
import org.gradle.api.tasks.JavaExec
12
10
import org.gradle.api.tasks.bundling.Jar
13
11
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
@@ -27,7 +25,14 @@ public abstract class ShadowKmpPlugin : Plugin<Project> {
27
25
}
28
26
29
27
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)
31
36
}
32
37
}
33
38
@@ -50,22 +55,14 @@ public abstract class ShadowKmpPlugin : Plugin<Project> {
50
55
}
51
56
}
52
57
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)
69
66
}
70
67
}
71
68
}
0 commit comments