如何转储用于构建的所有gradle值

zeb*_*bra 14 groovy gradle android-gradle-plugin

我们在android studio中有一个多项目gradle构建.我们不时地改变其中的一些东西,通常只有一两行代码,但它从不容易知道放在哪里.我发现很难知道哪些属性存在于哪里所以我希望有类似转储的东西 - 我可以在那个时间点看到所有属性和他们的孩子,这会使更改变得更容易

我找到了这个

def void explainMe(it){
    //println "Examining $it.name:"
    println "Meta:"
    println it.metaClass.metaMethods*.name.sort().unique()
    println "Methods:"
    println it.metaClass.methods*.name.sort().unique()
    println "Depends On:"
    //println it.dependsOn.collect({it*.getName()})
    println "Properties:"
    println it.properties.entrySet()*.toString()
        .sort().toString().replaceAll(", ","\n")
}
Run Code Online (Sandbox Code Playgroud)

这是好的,但我想在顶层范围内调用它并递归所有子节点,并且最好将文件存储输出到文件以便能够搜索它.任何想法将不胜感激?或者可以将调试器附加到gradle构建并检查/监视内部的变量吗?

谢谢

Pet*_*ser 9

摇篮有检查构建模型(的某些部分非常具体的支持gradle tasks,gradle help --task taskName,gradle properties,gradle projects,gradle dependencies,gradle dependencyInsight,等),但目前没有任意构建模型的属性和它们的值的深层检测的通用功能.相反,人们通常println会在构建脚本中添加一些s和/或参考Gradle Build Language Reference.

要回答第二个问题,可以使用与任何其他外部应用程序相同的方式调试Gradle构建.可以通过JAVA_OPTSGRADLE_OPTS环境变量设置必要的JVM args(通常由调试器提供).--no-daemon调试时最好执行Gradle .