首页 > 解决方案 > kotlin multiplatform shadow fat jar 和 runShadow 任务?

问题描述

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

我成功创建了一个java -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)吗?

标签: gradlegradle-kotlin-dslkotlin-multiplatformgradle-shadow-plugin

解决方案


我正在使用以下内容:

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

推荐阅读