Gradle不会发出kotlin.js

时间:2018-12-02 17:13:19

标签: gradle kotlin build.gradle kotlin-js

我正在尝试将我的Kotlin应用程序和Kotlin库集编译为JavaScript。我的工作正常,但是当我尝试运行它时,找不到kotlin.js

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


以下是有关代码和项目的链接:https://github.com/BlueHuskyStudios/Decision-Cruncher/blob/SO/q/53582651/1/build.gradle

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

这仅对我有用。 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"参数。此标志将防止覆盖现有文件

答案 2 :(得分:1)

对于将来遇到任何其他困难的人,我遇到了以下问题:

已经在gradle文件中生成了IntelliJ Kotlin / JS入门项目:

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

要获取kotlin.js文件必须是

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