cfn*_*fnz 5 ktor gradle-kotlin-dsl kotlin-multiplatform
尝试为 kotlin 多平台项目创建一个可运行的 jar,其中包含一个 ktor 服务器组件,使用 Kotlin Gradle DSL 构建。
我看到了几个问题,包括Create fat jar from kotlin multiplatform project ,它询问并回答如何在 Groovy 中创建 gradle 构建文件,但是如何在 kotlin dsl 中做到这一点?
据报告可以正常工作的常规代码是:
kotlin {
jvm() {
withJava()
jvmJar {
manifest {
attributes 'Main-Class': 'sample.MainKt'
}
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
这将如何转换为 Kotlin DSL?我尝试了很多变体,其中一些可以编译并运行,但没有创建所需的输出...可运行的 jar。
@andylamax 的答案非常接近,但导致了 @cfnz 看到的错误
要解决此问题,您需要添加doFirst如下示例所示:
val jvm = jvm() {
withJava()
val jvmJar by tasks.getting(org.gradle.jvm.tasks.Jar::class) {
doFirst {
manifest {
attributes["Main-Class"] = project.ext["mainClass"]
}
from(configurations.getByName("runtimeClasspath").map { if (it.isDirectory) it else zipTree(it) })
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在这里按预期工作gradle jvmJar && java -jar build/libs/laguna-jvm.jar
| 归档时间: |
|
| 查看次数: |
3018 次 |
| 最近记录: |