You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Gradle项目使其依赖Kotlin项目生成的JS代码

解决方案:将Kotlin多平台JS产物打包进Spring Boot可分发Jar包

前置说明

你的场景基于Gradle多项目构建,公共逻辑为同时支持JVM、JS目标的Kotlin多平台模块,Spring Boot服务端默认仅依赖该模块的JVM编译产物,需要额外配置拉取JS产物并打入最终的可执行Jar。

配置步骤

1. 调整Kotlin公共模块配置,生成可被依赖的JS构件

在公共Kotlin模块的build.gradle.kts中新增JS产物打包任务,并将其加入发布构件列表:

kotlin {
    // 保留原有JVM目标配置
    jvm()
    // 保留原有JS目标配置,示例为浏览器端IR编译器
    js(IR) {
        browser()
        binaries.executable()
    }

    // 保留原有sourceSets配置
}

// 注册JS产物打包任务
val jsJar by tasks.registering(Jar::class) {
    group = "build"
    archiveClassifier.set("js")
    // 从JS生产构建的输出目录取产物
    from(tasks.named("jsBrowserProductionWebpack"))
    // 指定JS产物在Jar内的路径,放到static目录下Spring可直接作为静态资源分发
    into("static/kotlin-shared")
}

// 将JS Jar加入模块的构件列表,可供其他项目依赖
artifacts {
    archives(jsJar)
}

如果使用Groovy DSL编写Gradle脚本,对应调整语法即可。

2. 调整Spring Boot服务端模块依赖配置

在服务端模块的build.gradle.kts的依赖块中,新增对公共模块JS构件的依赖:

dependencies {
    // 保留原有对公共模块JVM版本的依赖
    implementation(project(":你的公共Kotlin模块名"))
    // 新增运行时依赖公共模块的JS构件
    runtimeOnly(project(":你的公共Kotlin模块名", "js"))
}

3. 验证配置

执行服务端的bootJar任务,解压生成的可执行Jar:

  • 检查BOOT-INF/lib目录下是否存在[公共模块名]-[版本号]-js.jar文件
  • 直接启动服务,访问http://你的服务地址/kotlin-shared/[JS文件名].js即可获取到编译后的公共逻辑JS代码

备选轻量方案(无需单独打包JS Jar)

如果你的公共模块不需要单独对外发布,也可以直接在服务端的资源处理任务中直接拷贝公共模块的JS构建产物:

// 写在服务端模块的build.gradle.kts中
tasks.processResources {
    // 先执行公共模块的JS生产构建
    dependsOn(":你的公共Kotlin模块名:jsBrowserProductionWebpack")
    // 拷贝构建产物到服务端的静态资源目录
    from(file("${project(":你的公共Kotlin模块名").buildDir}/dist/js/productionExecutable")) {
        into("static/kotlin-shared")
    }
}

该方案不会生成独立的JS Jar,产物会直接打入服务端Jar的BOOT-INF/classes/static目录下。

内容的提问来源于stack exchange,提问作者Konstantin Tarashchanskiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:36:02