我有一个我继承的复杂的gradle构建系统。它工作得很好,但包括多个插件(java,groovy,antlr,jacoco,jetty等)。我无法弄清楚如何完成某些事情,所以我做了'./gradlew tasks --all'。事实证明,有一个'生成'任务完成它(它重新生成基于antlr的代码)。很好,但花了很长时间,我不知道。
生成任务的地方来自哪里?我可以使用什么gradle命令来确定该任务的来源?有一个自定义的antlr任务有'dependsOn'生成',所以我认为它来自antlr插件,但很难说。
答案 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'
}