如何将复杂的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




