如何为Gradle自定义任务添加无需值的Flag型选项?
实现Gradle自定义任务的无值Flag选项
嘿,我之前刚好解决过一模一样的需求!Gradle其实完全支持这种无值的开关式Flag,只是官方文档没把这个场景单独高亮出来而已,咱们一步步来实现:
核心思路
给自定义任务添加一个boolean类型的属性,默认值设为false,然后用@Option注解把它和命令行的--flag参数绑定。只要命令行里出现--flag,这个属性就会自动变成true,不用传任何值。
Groovy DSL 实现示例
1. 定义自定义任务类
import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction import org.gradle.api.options.Option class MyTask extends DefaultTask { // 默认关闭,没加--flag时就是false @Option(option = "flag", description = "启用特殊处理逻辑") boolean flag = false @TaskAction void run() { if (flag) { println "✅ 执行带Flag的特殊逻辑" } else { println "🔹 执行普通逻辑" } } }
2. 注册任务到构建脚本
在build.gradle里注册这个任务:
tasks.register("my-task", MyTask)
Kotlin DSL 实现示例
如果用Kotlin写构建脚本,写法稍微调整一下:
import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction import org.gradle.api.options.Option open class MyTask : DefaultTask() { @set:Option(option = "flag", description = "启用特殊处理逻辑") var flag: Boolean = false @TaskAction fun run() { when (flag) { true -> println("✅ 执行带Flag的特殊逻辑") false -> println("🔹 执行普通逻辑") } } } // 注册任务 tasks.register<MyTask>("my-task")
测试验证
- 运行普通命令:
gradle my-task,会输出普通逻辑 - 带Flag运行:
gradle my-task --flag,会触发特殊逻辑 - 额外小技巧:如果需要主动关闭默认开启的Flag,可以用
--no-flag(不过咱们这里默认是关闭的,一般用不上)
原理说明
Gradle的@Option注解对boolean类型属性做了特殊处理:只要命令行中出现对应的参数名,就会自动将属性设为true,不需要跟随任何值。完美契合你要的“仅判断是否存在”的需求。
内容的提问来源于stack exchange,提问作者yodamad
相关产品推荐
相关产品推荐

