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

如何将Groovy编写的Gradle任务改写为Kotlin Gradle脚本?

Groovy转Kotlin Gradle脚本解决方案

我来帮你把这两个Groovy Gradle任务转换成Kotlin脚本,其实写法差异不大,我给你拆解每个任务的转换要点:

1. 配置KotlinCompile任务的JVM目标

Groovy原代码

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { jvmTarget = "1.8" } }

Kotlin转换代码

首先确保顶部导入对应的任务类(如果还没导入的话):

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

然后配置任务:

tasks.withType<KotlinCompile>().configureEach {
    kotlinOptions.jvmTarget = "1.8"
}

关键点说明:

  • Kotlin用泛型<KotlinCompile>明确指定任务类型,替代Groovy里的全限定类名写法
  • 用configureEach方法替代Groovy的all,作用完全一致,都是批量配置同类型任务
  • Kotlin里访问kotlinOptions直接用点号调用,语法更简洁

2. 创建Exec类型的清除App缓存任务

Groovy原代码

task clearAppCache(type: Exec) {
    def clearDataCommand = ['adb', 'shell', 'pm', 'clear', 'io.hruska.pocketplay']
    commandLine clearDataCommand
}

Kotlin转换代码

tasks.register<Exec>("clearAppCache") {
    val clearDataCommand = listOf("adb", "shell", "pm", "clear", "io.hruska.pocketplay")
    commandLine(clearDataCommand)
    
    // 也可以直接省略变量,直接传参数:
    // commandLine("adb", "shell", "pm", "clear", "io.hruska.pocketplay")
}

关键点说明:

  • Kotlin里创建指定类型的任务用tasks.register<Exec>("任务名"),替代Groovy的task 任务名(type: Exec)写法
  • commandLine在Kotlin里是函数调用,需要加括号(Groovy里可以省略括号),你可以传入列表或者直接传可变参数,两种写法都能正常工作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:58:38