Gradle compileKotlin includeRuntime 未将运行时添加到 jar

2024-02-20

我有一个 Kotlin Gradle 项目,我想在 jar 文件中包含 Kotlin 的运行时和 stdlib。我目前正在使用它,但当我使用 build.gradle 配置构建项目时,它不包括运行时或 stdlib。

compileKotlin {
    kotlinOptions {
        includeRuntime = true
        noStdlib = false
    }
}

这是我用来在 jar 中包含运行时/stdlib 的 Gradle 代码,但它没有像我期望的那样工作。以下是某些上下文的完整 build.gradle 文件:https://github.com/BenWoodworth/CrossPlatformGreeter/blob/bd1da79f36e70e3d88ed871bc35502ecc3a852fb/build.gradle#L35-L43 https://github.com/BenWoodworth/CrossPlatformGreeter/blob/bd1da79f36e70e3d88ed871bc35502ecc3a852fb/build.gradle#L35-L43

Kotlin 的 Gradle 文档似乎表明将 kotlinOptions.includeRuntime 设置为 true 应该在生成的 .jar 中包含 Kotlin 运行时。
https://kotlinlang.org/docs/reference/using-gradle.html#attributes-specific-for-kotlin https://kotlinlang.org/docs/reference/using-gradle.html#attributes-specific-for-kotlin

Edit:这可能是相关的。当我运行compileKotlin时,我收到一些与运行时相关的警告:

:compileKotlin
w: Classpath entry points to a non-existent location: <no_path>\lib\kotlin-runtime.jar

BUILD SUCCESSFUL

这是我想出的一个替代方案。它将使用 jar 任务将 Kotlin 运行时和 stdlib 添加到 jar 中。

jar {
    from {
        String[] include = [
            "kotlin-runtime-${version_kotlin}.jar",
            "kotlin-stdlib-${version_kotlin}.jar"
        ]

        configurations.compile
                .findAll { include.contains(it.name) }
                .collect { it.isDirectory() ? it : zipTree(it) }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle compileKotlin includeRuntime 未将运行时添加到 jar 的相关文章

随机推荐