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

如何在Gradle Kotlin DSL中实现Exec任务的output()扩展方法

在Gradle Kotlin DSL中通过扩展方法简化Exec任务输出获取

如果想替换现有代码里的类型转换操作,用类似avdIsRunning.output()的方式直接获取Exec任务的标准输出,可以通过给Exec类型添加扩展函数实现,让代码更简洁优雅:

第一步:定义扩展函数

在build.gradle.kts文件中添加针对Exec任务的扩展方法,封装输出获取逻辑:

// 为Exec任务扩展输出获取方法
fun Exec.output(): String {
    return this.standardOutput.toString()
}

第二步:修改任务定义

调整任务代码,利用扩展方法直接获取输出,无需手动类型转换:

// 注册Exec任务并指定输出流
tasks.register<Exec>("avdIsRunning") {
    commandLine("adb", "devices")
    standardOutput = ByteArrayOutputStream()
}

// 依赖avdIsRunning任务并获取其输出
tasks.register("task2") {
    dependsOn("avdIsRunning")
    doLast {
        val avdTask = tasks.named<Exec>("avdIsRunning").get()
        val output = avdTask.output()
        println("AVD设备列表输出: $output")
    }
}

补充说明

  • 扩展函数output()把原本需要强转+toString()的逻辑封装起来,既提升了代码复用性,也让可读性更高。
  • 使用tasks.named<Exec>("avdIsRunning")可以直接获取指定类型的任务实例,比tasks.getByName()后强转的写法更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:15:32