Jak widzieliśmy w dokumentacji, są trzy fazy: Inicjalizacja, Konfiguracja i Realizacja. Każdy krok przechodzi z projektu głównego do podprojektów dla wielu wersji projektu. Funkcja AfterEvaluate jest przydatna w pliku gradowym dla wielu kompozycji projektu, gdy chcesz skonfigurować określone elementy w oparciu o konfigurację wykonaną w podprojektach.
Powiedz, że chcesz dodać zadanie dla wszystkich podprojektów, które mają zdefiniowaną określoną wtyczkę. Jeśli dodasz do głównego projektu:
subprojects {subProject ->
if (subProject.plugins.hasPlugin('myplugin')){
subProject.task('newTask')<<{
println "This is a new task"
}
}
}
Zadanie to nigdy nie zostanie dodane, ponieważ projekt główny jest skonfigurowany przed podprojektami. Dodajesz afterEvaluate rozwiąże to dla ciebie:
subprojects {subProject ->
afterEvaluate{
if (subProject.plugins.hasPlugin('myplugin')){
subProject.task('newTask')<<{
println "This is a new task"
}
}
}
}
Więc ** afterEvaluate ** można skonfigurować kilka przedmiotów po konfiguracja reszta została wykonana? Coś jak doLast, ale nie dla pojedynczych zadań, ** afterEvaluate ** umieszcza swoją konfigurację po innej konfiguracji i przed wykonaniem. Czy ocena jest wykonywana po zakończeniu konfiguracji i przed wykonaniem? Czy mam rację? – Xelian
Tak, masz rację. Oprócz "project.afterEvaluate", który jest uruchamiany po skonfigurowaniu określonego projektu, istnieje również hak 'gradle.projectsvaluated', który uruchamia się po skonfigurowaniu wszystkich projektów. –