我正在使用 Kotlin 在我的后端(Java Spring Web)和前端之间共享逻辑。让 Java 后端调用 Kotlin 逻辑很容易:我制作了同一个 Gradle Multiproject 构建的两个部分,并使服务器项目依赖于 Kotlin 项目。
现在我需要将生成的 JavaScript 从 Kotlin 中取出并转换成服务器可以提供的格式。查看服务器的 Gradle 输出 jar,它只有 jvm jar,没有 js jar。
我正在使用 Kotlin 在我的后端(Java Spring Web)和前端之间共享逻辑。让 Java 后端调用 Kotlin 逻辑很容易:我制作了同一个 Gradle Multiproject 构建的两个部分,并使服务器项目依赖于 Kotlin 项目。
现在我需要将生成的 JavaScript 从 Kotlin 中取出并转换成服务器可以提供的格式。查看服务器的 Gradle 输出 jar,它只有 jvm jar,没有 js jar。
我在这个 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 ( )中的这个位置提供静态文件。