- Initiales Android-Projekt commit
- *.gradle -> *.gradle.kts commit
- Tasks commit
- Task-Abhängigkeiten commit
- Plugin commit
- Plugin-Konfiguration commit
- DSL für Plugin-Konfiguration commit
- Auslagerung der Tasks in eigene Datei commit
- Submodule/Subproject commit
- Submodule/Subproject außerhalb des Projekts commit
- gradle.properties commit
In dieser Phase wird geschaut, welches der Projekte für das Build einbezogen werden muss und es wird eine Project-Instanz für jedes dieser Projekte erstellt.
Es werden alle, vorher erstellten, Project-Objekte konfiguriert und alle Build-Scripte der beteiligten Projekte ausgeführt.
Anhand des auszuführenden Tasks, via gradle(w) TaskName, werden die benötigten Tasks ermittelt, welche in der vorherigen Phase konfiguriert wurden und in Abhängigkeit zu dem auszuführenden Task stehen.
Diese Tasks werden jetzt in der ermittelten Reihenfolge ausgeführt.
Diese Datei wird während der Initialization-Phase ausgeführt und beschreibt, welche Projekte in einem Multi-Project-Build vorhanden sind.
Beispiel:
settings.gradle(.kts)
rootProject.name = "basic"
println("This is executed during the initialization phase.")
build.gradle(.kts)
println("This is executed during the configuration phase.")
tasks.register("configured") {
println("This is also executed during the configuration phase.")
}
tasks.register("test") {
doLast {
println("This is executed during the execution phase.")
}
}
tasks.register("testBoth") {
doFirst {
println("This is executed first during the execution phase.")
}
doLast {
println("This is executed last during the execution phase.")
}
println("This is executed during the configuration phase as well.")
}
$ gradle test testBoth
This is executed during the initialization phase.
> Configure project :
This is executed during the configuration phase.
This is executed during the configuration phase as well.
> Task :test
This is executed during the execution phase.
> Task :testBoth
This is executed first during the execution phase.
This is executed last during the execution phase.
BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
Wenn gradle(w) in einem Subproject ausgeführt wird (project/sub), wird nach einer settings.gradle(.kts) in diesem Verzeichnis gesucht.
Falls keine gefunden wird, wird in der Verzeichnishierarchie eine Ebene höher gesucht, bis zum Root (project/).
Wird keine settings.gradle(.kts) gefunden, wird das Subproject als Single-Project-Build ausgeführt.
Wenn das zu bauende Projekt eine settings.gradle(.kts) enthält, dann wird das Projekt ausgeführt als:
Single-Project: Wenn nur ein include(":name") existiert.
Multi-Project: Wenn mehrere include(":name"); include(":name2"); etc. existieren.
Jedes Projekt kann wiederum Subprojects haben (project/sub/child).
Analog wird für project/sub/child, nach einer settings.gradle(.kts), in der beschriebenen Weise gesucht, falls gradle(w) in diesem Projekt ausgeführt wird.
Multi-Project heißt in diesem Fall, dass die Abhängigkeit zu anderen Projekten ermittelt und wenn gegeben, diese ebenso gebaut werden.
Zusammengefasst von: Build Lifecycle (Gradle User Manual)