2014-03-05 17 views
12

我们在android studio中有一个多项目gradle构建。我们不时需要改变其中的某些内容,通常只有一两行代码,但不知道该放哪些代码。我发现很难知道哪些属性存在哪里,所以我很想拥有像转储的东西 - 我可以在时间点看到所有属性和他们的孩子,这将使更改变得更容易如何转储用于构建的所有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 build并检查/监视变量?

感谢

+0

伟大的调试方法,谢谢! –

回答

7

摇篮有检查构建模型(gradle tasksgradle help --task taskNamegradle propertiesgradle projectsgradle dependenciesgradle dependencyInsight等)的某些部分非常具体的支持,但目前没有深的通用功能检查任意构建模型属性及其值。相反,人们通常会将一些println添加到构建脚本和/或参考Gradle Build Language Reference

要回答你的第二个问题,可以像其他外部应用程序一样调试Gradle构建。必要的JVM参数(通常由调试器提供)可通过JAVA_OPTSGRADLE_OPTS环境变量进行设置。调试时最好用--no-daemon执行Gradle。

+0

任务不显示属性,其中一些是/可以由任务设置。 – will