2013-04-17 9 views
10

Jestem nowym narzędziem do tworzenia Gradle, a teraz czytam Podręcznik użytkownika, ale nie mogę w pełni zrozumieć różnicy między fazami oceny i wykonania.Różnica między ocenami i ocenami Gradle'a

W fazie konfiguracji konfiguracja obiektów projektu i utworzenie DAG, ale mamy po Ocena, więc co jest tutaj ocenić? Ocena zależności zadań lub co?

Odpowiedz

11

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" 
     } 
    } 
    } 
} 
+0

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

+8

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. –

Powiązane problemy