Skip to content

Commit f7964a0

Browse files
committed
Move runShadow registering into executable block
1 parent 1d6150a commit f7964a0

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

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

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.github.jengelman.gradle.plugins.shadow.internal.distributions
77
import com.github.jengelman.gradle.plugins.shadow.internal.javaPluginExtension
88
import com.github.jengelman.gradle.plugins.shadow.internal.javaToolchainService
99
import com.github.jengelman.gradle.plugins.shadow.internal.requireResourceAsText
10-
import kotlin.io.path.Path
1110
import org.gradle.api.Plugin
1211
import org.gradle.api.Project
1312
import org.gradle.api.plugins.ApplicationPlugin
@@ -18,6 +17,7 @@ import org.gradle.api.tasks.TaskProvider
1817
import org.gradle.api.tasks.application.CreateStartScripts
1918
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator
2019
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
20+
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmBinaryDsl
2121

2222
/**
2323
* A [Plugin] which packages and runs a project as a Java Application using the shadowed jar.
@@ -26,27 +26,23 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
2626
*/
2727
public abstract class ShadowKmpAppPlugin : Plugin<Project> {
2828
override fun apply(project: Project) {
29-
project.addRunTask()
30-
project.addCreateScriptsTask()
29+
project.extensions.getByType(KotlinMultiplatformExtension::class.java).jvm().binaries {
30+
executable {
31+
project.addRunTask(this)
32+
}
33+
}
3134
// project.configureDistribution()
3235
}
3336

34-
protected open fun Project.addRunTask() {
37+
protected open fun Project.addRunTask(dsl: KotlinJvmBinaryDsl) {
3538
tasks.register(SHADOW_RUN_TASK_NAME, JavaExec::class.java) { task ->
3639
task.description = "Runs this project as a JVM application using the shadow jar"
3740
task.group = ApplicationPlugin.APPLICATION_GROUP
3841

39-
extensions.getByType(KotlinMultiplatformExtension::class.java).jvm().binaries {
40-
executable {
41-
task.mainModule.set(mainModule)
42-
task.mainClass.set(mainClass)
43-
task.jvmArguments.convention(applicationDefaultJvmArgs)
44-
val jarFile = executableDir.zip(tasks.shadowJar) { e, s ->
45-
Path(e).resolveSibling("lib/${s.archiveFile.get().asFile.name}")
46-
}
47-
task.classpath(jarFile)
48-
}
49-
}
42+
task.mainModule.set(dsl.mainModule)
43+
task.mainClass.set(dsl.mainClass)
44+
task.jvmArguments.convention(dsl.applicationDefaultJvmArgs)
45+
task.classpath(tasks.shadowJar)
5046

5147
task.modularity.inferModulePath.convention(javaPluginExtension.modularity.inferModulePath)
5248
task.javaLauncher.convention(javaToolchainService.launcherFor(javaPluginExtension.toolchain))

0 commit comments

Comments
 (0)