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

Gradle为带自定义参数的任务定义别名的实现方法

实现方法

dependsOn 机制本身就不支持给被依赖任务传递命令行参数,没必要在这个方向上绕路。--configuration productionDebugRuntimeClasspath 本质是给内置依赖报告任务的configuration属性赋值,直接在构建脚本里操作任务属性就能完全等价实现你要的效果。

最优方案:新建独立的依赖报告任务

这个方案不会改动原有:app:dependencies任务的默认行为,隔离性最好。写完后执行./gradlew extractMyDeps,输出结果和你之前敲的长命令完全一致。

  • Kotlin DSL(build.gradle.kts)代码:
tasks.register<DependencyReportTask>("extractMyDeps") {
    configuration = project(":app").configurations.getByName("productionDebugRuntimeClasspath")
}
  • Groovy DSL(build.gradle)代码:
task extractMyDeps(type: DependencyReportTask) {
    configuration = project(":app").configurations.productionDebugRuntimeClasspath
}

备选方案:复用内置dependencies任务

如果你一定要关联调用原有的:app:dependencies任务,可以在自定义任务中提前给目标任务的对应属性赋值,再声明依赖即可。注意要用懒加载的方式拿任务,避免拖慢全量构建的配置速度:

  • Kotlin DSL版本:
tasks.register("extractMyDeps") {
    val appDepsTask = project(":app").tasks.named<DependencyReportTask>("dependencies")
    appDepsTask.configure {
        configuration = project(":app").configurations.getByName("productionDebugRuntimeClasspath")
    }
    dependsOn(appDepsTask)
}
  • Groovy DSL版本:
task extractMyDeps {
    def appDepsTask = project(":app").tasks.named("dependencies")
    appDepsTask.configure {
        configuration = project(":app").configurations.productionDebugRuntimeClasspath
    }
    dependsOn(appDepsTask)
}

注意:这个方案会修改:app:dependencies任务的默认配置,后续你直接执行./gradlew :app:dependencies时,会默认输出productionDebugRuntimeClasspath的依赖树,除非你手动传其他configuration参数覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:51:22