我想递归地打印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属性,并且每个属性都具有plus属性。但是我不知道这些对象上可能还存在其他嵌套属性。最好有一个函数,当传递任何对象时,所有属性都将递归打印到控制台,这将允许彻底检查对象。

最佳答案

scopesLinkedHashMap,因此您能做的最好是:

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

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

如果它是非Map的对象,则可以执行以下操作:
scopes.getMetaClass().properties.each { println "PROPERTY $it.name" }

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

08-05 10:48