问题描述
我有一个相当标准的 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")
)
}