Skip to content

inserteffect/e.solutions-workshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

e.solutions Workshop 2021-02-03

History

Allgemein

  • 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

Android

Gradle

Lifecycle

Initialization

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.

Configuration

Es werden alle, vorher erstellten, Project-Objekte konfiguriert und alle Build-Scripte der beteiligten Projekte ausgeführt.

Execution

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.

settings.gradle(.kts)

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)

About

Gradle Workshop for e.solutions GmbH

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors