2014-02-12 80 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 :-)