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

时间:2014-03-05 16:46:43

标签: groovy gradle android-gradle

我们在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")
}

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

感谢

1 个答案:

答案 0 :(得分:7)

Gradle非常具体地支持检查构建模型的某些部分(gradle tasksgradle help --task taskNamegradle propertiesgradle projectsgradle dependencies,{{1但是,目前没有用于深入检查任意构建模型属性及其值的通用功能。相反,人们通常会在构建脚本中添加一些gradle dependencyInsight和/或咨询Gradle Build Language Reference

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