【发布时间】:2021-06-21 08:46:02
【问题描述】:
我正在尝试在使用 gradle 构建我的 jar 时包含 kotlin 运行时。我在网上的任何地方都找不到更新日期线程来说明如何做到这一点。
目前我已经尝试了以下
plugins {
kotlin("jvm") version "1.5.10"
}
repositories {
mavenCentral()
}
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
freeCompilerArgs = freeCompilerArgs + "-include-runtime"
jvmTarget = "16"
}
}
这可以很好地构建 jar,但不像我期望的那样包含运行时。如何配置 gradle 来执行此操作?
【问题讨论】:
-
“包含运行时”是什么意思?在生成的 jar 文件中包含 Kotlin 标准库?通常,我们不会将所有内容都放在一个 jar 文件中,而是使用多个 jar 文件。如果您需要将所有依赖项放入一个 jar 中,请搜索创建“fat jar”的插件。
-
是的,对不起,我是 Kotlin 的新手。我希望在生成的 jar 中包含 stdlib,以便它可以独立使用不使用 Kotlin 的 java 项目
-
这不是在 Java/Kotlin 世界中包含对库的依赖项的标准方式。如果您使用 Gradle(或 Maven)创建一个库并从另一个 Maven/Gradle 项目中使用它,它将自动为您包含 Kotlin 的 stdlib。但是如果你真的,真的需要将你的库作为一个简单的 jar 文件分发,那么正如我所说 - 你需要创建一个所谓的 fat jar。你应该找到几个可以做到这一点的插件。
-
您是在创建库还是应用程序?
-
使用没有 kotlin 运行时的 jvm 加载到应用程序中的库,因此,我需要捆绑 kotlin 运行时。