如何递归打印gradle配置?

时间:2014-02-12 23:27:27

标签: groovy 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属性,并且每个属性都有一个加号属性。但我不知道这些对象上可能存在哪些其他嵌套属性。最好有一个函数,当传递任何对象时,所有属性都会递归地打印到控制台,这样就可以彻底检查对象。

1 个答案:

答案 0 :(得分:2)

scopesLinkedHashMap,因此您可以做的最好的事情是:

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

打印密钥(例如:COMPILE)及其当前值。

如果它是Map以外的对象,您可以执行以下操作:

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

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