首页 > 解决方案 > 从 Gradle 中的 Groovy 闭包返回值的更好方法

问题描述

下面的代码有效。它获取 Gradle 中所有不同任务组的集合并将它们打印出来。我希望有更好的方法来做到这一点。部分问题是我可以访问所有任务的唯一方法是通过all()具有此签名的方法,这void all(Closure var1);非常令人沮丧,因为仅返回一个集合,我得到一个可以迭代集合的闭包。

afterEvaluate { Project project ->
    def blah = []
    project.tasks.all { Object object ->
        blah << object.group
    }
    println blah.unique()
}

我希望有比将值存储在闭包外部定义的变量中更好的方法来做到这一点。这里的主要问题是,当闭包运行时,我一次只能访问一个组名,并且我想使它们唯一,并且我不能从 all 函数返回任何东西,因为返回类型是 void。

标签: gradlegroovy

解决方案


由于 project.tasks 是一个集合,您是否尝试过类似的东西

afterEvaluate { Project project ->
    println project.tasks.collect { it.group }.unique()
}

推荐阅读