Gradle 不发出 kotlin.js

Gradle doesn't emit kotlin.js

我正在尝试将我的 Kotlin 应用程序和一组 Kotlin 库编译为 JavaScript。我已经很好用了,但是当我尝试 运行 它找不到 kotlin.js.

这是怎么回事? 当我使用 IDEA 编译时(而不是 Gradle),它输出 kotlin.js 就好了。我试着让我的构建脚本更像我发现的例子,but that wouldn't compile...


这里是有问题的代码和项目的 link:https://github.com/BlueHuskyStudios/Decision-Cruncher/blob/SO/q/53582651/1/build.gradle

Here 您可以找到从 Kotlin/JS 库中提取所有 .js 文件的代码片段:

task assembleWeb(type: Sync) {
    configurations.compile.each { File file ->
        from(zipTree(file.absolutePath), {
            includeEmptyDirs = false
            include { fileTreeElement ->
                def path = fileTreeElement.path
                path.endsWith(".js") && (path.startsWith("META-INF/resources/") || 
                    !path.startsWith("META-INF/"))
            }
        })
    }
    from compileKotlin2Js.destinationDir
    into "${projectDir}/web"

    dependsOn classes
}

assemble.dependsOn assembleWeb

对于任何其他在未来挣扎的人,我遇到了以下问题:

IntelliJ Kotlin/JS 启动项目已在 gradle 文件中生成:

implementation "org.jetbrains.kotlin:kotlin-stdlib-js"

需要这样才能获取 kotlin.js 文件

compile "org.jetbrains.kotlin:kotlin-stdlib-js"

这只对我有用。 unzip 由于某种原因无法正常工作

task assembleWeb() {
    configurations.implementation.setCanBeResolved(true)
    configurations.implementation.each { File file ->
        if (file.path.indexOf('kotlin-stdlib-js') >= 0) {
            exec {
                workingDir "$projectDir/web"
                standardOutput = new ByteArrayOutputStream()
                commandLine "7z", "e", file.absolutePath, "kotlin.js", "-aos", "-r"
            }
        }
    }
    dependsOn classes
}

assemble.dependsOn assembleWeb

注意 "-aos" 参数。此标志将防止覆盖现有文件