You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将复杂的Gradle任务封装为更简洁的自定义任务?

如何将复杂的Gradle任务封装为更简洁的自定义任务?

嗨,我来帮你搞定这个问题!你想要把那串冗长的Gradle命令封装成简洁的自定义任务,其实用Gradle原生的任务依赖+属性配置就能轻松实现,完全不用再手动敲一大串参数,而且比直接执行命令行更符合Gradle的设计逻辑。

下面是适配Kotlin DSL的实现代码,直接放到你的build.gradle.kts里就行:

tasks.register("updateLicenseInformation") {
    group = "Entreco"
    description = "Update all license information json file"

    // 获取你要调用的目标任务
    val exportLibraryTask = tasks.named("features:about:exportLibraryDefinitions")
    
    // 让自定义任务依赖这个目标任务,确保它会被优先执行
    dependsOn(exportLibraryTask)

    // 在任务执行前设置需要的项目参数(对应你之前用-P传递的内容)
    doFirst {
        project.ext.set("aboutLibraries.exportPath", "src/commonMain/composeResources/files")
        project.ext.set("aboutLibraries.exportVariant", "release")
    }
}

为什么这么写更合适?

  • 这种方式利用了Gradle的任务依赖机制,比直接调用命令行执行./gradlew ...更高效——Gradle可以自动处理增量构建,避免重复执行已经完成的步骤。
  • 所有参数都固化在脚本里,不用担心手动输入时写错路径或者参数,完美满足你简化操作的需求。

之后你只需要在终端运行./gradlew updateLicenseInformation,Gradle就会自动帮你执行原来的复杂任务,并且带上正确的参数啦!

备注:内容来源于stack exchange,提问作者Entreco

火山引擎 最新活动