Как сбросить все значения 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 сборке и проверке/просмотру переменных внутри?

спасибо

Ответ 1

Gradle имеет очень специфическую поддержку для проверки определенных частей модели построения (gradle tasks, gradle help --task taskName, gradle properties, gradle projects, gradle dependencies, gradle dependencyInsight и т.д.), но doesn ' t в настоящее время имеет общую функцию для глубокого контроля свойств произвольной модели сборки и их значений. Вместо этого обычно можно добавить некоторые println в сборку script и/или обратиться к Gradle Справочник по языку сборки.

Чтобы ответить на ваш второй вопрос, сборка Gradle может быть отлажена так же, как и любое другое внешнее приложение. Необходимые аргументы JVM (обычно предоставляемые отладчиком) могут быть установлены с помощью переменной среды JAVA_OPTS или GRADLE_OPTS. Вероятно, лучше всего выполнить Gradle с --no-daemon при отладке.