Ответ 1
Как вы видели в документации, существует три этапа: Инициализация, Конфигурация и Исполнение. Каждый шаг проходит от корневого проекта до подпроектов для нескольких проектов. AfterEvaluate полезен в корневом файле gradle многопроектной сборки, когда вы хотите настроить определенные элементы на основе конфигурации, сделанной в подпроектах.
Предположим, вы хотите добавить задачу для всех подпроектов, для которых определен определенный плагин. Если вы добавите в свой корневой проект:
subprojects {subProject ->
if ( subProject.plugins.hasPlugin('myplugin')){
subProject.task('newTask')<<{
println "This is a new task"
}
}
}
Эта задача никогда не будет добавлена, поскольку корневой проект настроен перед подпроектами. Добавление afterEvaluate решит это для вас:
subprojects {subProject ->
afterEvaluate{
if ( subProject.plugins.hasPlugin('myplugin')){
subProject.task('newTask')<<{
println "This is a new task"
}
}
}
}