如何将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
相关产品推荐
相关产品推荐

