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

如何为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:47:55