@@ -7,7 +7,6 @@ import com.github.jengelman.gradle.plugins.shadow.internal.distributions
7
7
import com.github.jengelman.gradle.plugins.shadow.internal.javaPluginExtension
8
8
import com.github.jengelman.gradle.plugins.shadow.internal.javaToolchainService
9
9
import com.github.jengelman.gradle.plugins.shadow.internal.requireResourceAsText
10
- import kotlin.io.path.Path
11
10
import org.gradle.api.Plugin
12
11
import org.gradle.api.Project
13
12
import org.gradle.api.plugins.ApplicationPlugin
@@ -18,6 +17,7 @@ import org.gradle.api.tasks.TaskProvider
18
17
import org.gradle.api.tasks.application.CreateStartScripts
19
18
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator
20
19
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
20
+ import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmBinaryDsl
21
21
22
22
/* *
23
23
* 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
26
26
*/
27
27
public abstract class ShadowKmpAppPlugin : Plugin <Project > {
28
28
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
+ }
31
34
// project.configureDistribution()
32
35
}
33
36
34
- protected open fun Project.addRunTask () {
37
+ protected open fun Project.addRunTask (dsl : KotlinJvmBinaryDsl ) {
35
38
tasks.register(SHADOW_RUN_TASK_NAME , JavaExec ::class .java) { task ->
36
39
task.description = " Runs this project as a JVM application using the shadow jar"
37
40
task.group = ApplicationPlugin .APPLICATION_GROUP
38
41
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)
50
46
51
47
task.modularity.inferModulePath.convention(javaPluginExtension.modularity.inferModulePath)
52
48
task.javaLauncher.convention(javaToolchainService.launcherFor(javaPluginExtension.toolchain))
0 commit comments