我怎么知道任务来自gradle的位置?

时间:2014-09-18 14:05:28

标签: gradle antlr4

我有一个我继承的复杂的gradle构建系统。它工作得很好,但包括多个插件(java,groovy,antlr,jacoco,jetty等)。我无法弄清楚如何完成某些事情,所以我做了'./gradlew tasks --all'。事实证明,有一个'生成'任务完成它(它重新生成基于antlr的代码)。很好,但花了很长时间,我不知道。

生成任务的地方来自哪里?我可以使用什么gradle命令来确定该任务的来源?有一个自定义的antlr任务有'dependsOn'生成',所以我认为它来自antlr插件,但很难说。

1 个答案:

答案 0 :(得分:0)

目前,找不到给定插件的所有任务以及为给定任务指定插件是不可能的。请查看docs - 任务和插件之间没有任何关联。

您可以尝试以下代码(可能容易出错):

import java.lang.reflect.Modifier

project.plugins.each { p ->
    println "Plugin: ${p.getClass().name} "
    p.getClass().declaredFields.findAll { 
        Modifier.isStatic(it.getModifiers()) && 
        it.name.endsWith('_TASK_NAME') &&
        it.type.simpleName.equals('String')
    }.each {
        println " -> ${it.get(p)}"
    }
    println '\n'
}