1

我正在使用 Kotlin 在我的后端(Java Spring Web)和前端之间共享逻辑。让 Java 后端调用 Kotlin 逻辑很容易:我制作了同一个 Gradle Multiproject 构建的两个部分,并使服务器项目依赖于 Kotlin 项目。

现在我需要将生成的 JavaScript 从 Kotlin 中取出并转换成服务器可以提供的格式。查看服务器的 Gradle 输出 jar,它只有 jvm jar,没有 js jar。

4

1 回答 1

1

我在这个 GitHub 项目中遇到了类似的问题,它有一个 Spring Boot 后端和一个 Kotlin/JS 前端 + 通用代码。

如果所有内容都在多个 Gradle 子项目中的同一个 repo 中,您可以在服务器子项目中使用以下内容将生成的 JS 作为资源捆绑到服务器的 jar 中:

tasks.processResources {
    // make sure we build the frontend before creating the jar
    dependsOn(":frontend:assemble")
    // package the frontend app within the jar as static
    val frontendBuildDir = project(":frontend").buildDir
    val frontendDist = frontendBuildDir.toPath().resolve("distributions")
    from(frontendDist) {
        include("**/*")
        into("static")
    }
}

这并不理想(我不喜欢这样的项目间依赖关系),但它可以完成工作。

/static然后 Spring Boot 会自动从 jar ( )中的这个位置提供静态文件。

于 2021-09-23T00:14:21.973 回答