2014-03-05 18 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