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

如何通过Gradle直接执行项目中的*.kts Kotlin脚本文件

实现方式

完全可以实现,不需要额外引入第三方插件,基于项目现有的org.jetbrains.kotlin.jvm插件做简单配置即可,配置完成后可以直接通过Gradle指令执行指定kts脚本,还能复用项目现有依赖、支持传参、配置任务执行顺序。

配置步骤

  • 第一步:补充Kotlin脚本运行所需依赖
    在项目的build.gradle.kts的dependencies块中添加以下依赖,和原有依赖放在一起即可:
dependencies {
    // 原有依赖(比如H2驱动、CSV处理库等保持不变)
    implementation(kotlin("scripting-jvm-host"))
    implementation(kotlin("scripting-common"))
}
  • 第二步:为每个需要执行的kts脚本注册对应Gradle任务
    还是在build.gradle.kts中,通过JavaExec任务类型注册自定义任务,以加载测试数据到H2的脚本为例:
tasks.register<JavaExec>("loadTestDataIntoLocalH2Database") {
    group = "dev-tools"
    description = "加载CSV测试数据到本地H2数据库"
    // 复用main源码集的运行时classpath,脚本可直接引用项目中已引入的所有依赖
    classpath = sourceSets.main.get().runtimeClasspath
    // 指定Kotlin脚本运行的入口主类
    mainClass.set("kotlin.script.templates.standard.ScriptTemplateWithArgs")
    // 传入脚本路径+脚本需要的启动参数
    args(
        "src/main/kotlin/LoadTestData.kts",
        // 脚本需要的参数直接按顺序追加在这里即可,和IDEA运行配置传参效果一致
        // 例如 "--db-path=./local/test.h2", "--csv-dir=./testdata"
    )
}

如果有多个脚本(比如创建测试用户的脚本、初始化表结构的脚本),按照上述格式新增对应任务即可。如果需要多个脚本按固定顺序执行,直接通过dependsOn配置任务依赖,比如导数据任务依赖初始化表结构任务,执行导数据指令时会自动先跑完前置任务,不需要手动分步操作。

使用方式

配置完成后,不需要额外做IDEA运行配置,直接在项目根目录执行对应Gradle指令即可:

  • Linux/macOS环境:./gradlew loadTestDataIntoLocalH2Database
  • Windows环境:gradlew.bat loadTestDataIntoLocalH2Database

如果脚本数量较多,不想手动逐个注册任务,也可以写一段简单的Kotlin逻辑扫描src/main/kotlin下的所有.kts文件,自动按照文件名注册对应任务,不过一般项目中这类工具脚本数量不多,手动配置的可读性和参数灵活度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.04 16:15:41