kotlin 多平台 shadow fat jar 和 runShadow 任务?

问题描述

我有一个相当标准的 kotlin 多平台 (mpp) build.gradle.kts,它使用应用程序插件com.github.johnrengelman.shadow

我成功创建了一个 java -jar 可执行的胖 jar:

application {
    mainClass.set(theMainClass)
}

tasks {
    val shadowCreate by creating(com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar::class) {
        manifest { attributes["Main-Class"] = theMainClass }
        archiveClassifier.set("fat")
        mergeServiceFiles()
        from(kotlin.jvm().compilations.getByName("main").output)
        configurations = mutablelistof(kotlin.jvm().compilations.getByName("main").compileDependencyFiles as Configuration)
    }
    val build by existing {
        dependsOn(shadowCreate)
    }
}

但现在我在如何分别使应用程序 gradle run 任务和影子 gradle runShadow 任务正确执行方面苦苦挣扎。

任何人有任何想法(kotlindsl)?

解决方法

我正在使用以下内容:

tasks.named<JavaExec>("run") {
    classpath += objects.fileCollection().from(
        tasks.named("compileKotlinJvm"),configurations.named("jvmRuntimeClasspath")
    )
}