2014-02-12 48 views
0

我想递归地打印Gradle构建的配置(或任何对象)。有没有办法递归地打印gradle中的对象的所有属性,甚至(特别是)如果你不知道所有的属性是什么?如何递归地打印gradle配置?

这里是一个例子。

idea { 
    module{ 
    scopes.COMPILE.plus += configurations.playManaged 
    scopes.PROVIDED.plus += configurations.provided 

    scopes.each { it -> 
     println("[${it}]") // how to replace this with something that will print all properties of the object? 
    } 
    } 
} 

在这个例子中,我知道范围同时具有COMPILE和PROVIDED属性,并且每个属性都有一个加号属性。但我不知道这些对象上可能存在其他嵌套属性。如果有一个函数,当传递任何对象时,所有属性都将被递归地打印到控制台,这将允许彻底检查对象。

回答

2

scopesLinkedHashMap,所以你能做的最好的是:

scopes.each { k, v -> println "$k -> $v" } 

要打印的快捷键(即:COMPILE)和它们的当前值。

如果它是一个比其他地图的对象,你可以这样做:

scopes.getMetaClass().properties.each { println "PROPERTY $it.name" } 

但是,这只会显示你classempty,因为它是一个Map :-)