2017-02-06 4 views

Antwort

1

ist nicht möglich. Die aktuelle Prüfung erfolgt in der Ausführungsphase, kurz bevor die doFirst ausgeführt wird. Es wird berechnet und dieser Wert wird nicht gespeichert. Außerdem kann die aktuelle Prüfung von den vorherigen Aufgabenausgaben abhängen. Um den aktuellen Status einer Aufgabe aufzulösen, müssen Sie daher alle ihre Abhängigkeiten ausführen (dependsOn Aufgaben). Daher würde das, was Sie fragen, theoretisch nur für die erste Aufgabe funktionieren, die nicht aktuell ist.

zu sehen, wie der Lebenszyklus funktioniert, ist hier ein einfaches Beispiel:

task hello { 
    println "CONFIG1" 
    outputs.upToDateWhen { 
     println "UPTODATE" 
     return false 
    } 
    println "CONFIG2" 
    doFirst { 
     println "DOFIRST" 
    } 
    doLast { 
     println "DOLAST" 
    } 
} 

Wenn Sie dies mit der Flagge --debug ausführen, werden Sie sehen das erste:

08:05:17.294 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.hello' (hidden = false) 
08:05:17.302 [QUIET] [system.out] CONFIG1 
08:05:17.329 [QUIET] [system.out] CONFIG2 
08:05:17.333 [DEBUG] [org.gradle.configuration.project.BuildScriptProcessor] Timing: Running the build script took 0.764 secs 

Die Konfigurationsphase einrichtet die aktuelle Überprüfung. Dann Gradle berechnet die grafische Darstellung der Aufgaben:

08:16:26.212 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter] Timing: Creating the DAG took 0.007 secs 

Und erst dann führt er die Aufgaben:

08:05:17.430 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :hello (Thread[main,5,main]) started. 
08:05:17.431 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :hello 
08:05:17.432 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Starting to execute task ':hello' 
08:05:17.461 [QUIET] [system.out] UPTODATE 
08:05:17.465 [INFO] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Putting task artifact state for task ':hello' into context took 0.032 secs. 
08:05:17.465 [DEBUG] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Determining if task ':hello' is up-to-date 
08:05:17.465 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':hello' (up-to-date check took 0.0 secs) due to: 
    Task.upToDateWhen is false. 
08:05:17.466 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':hello'. 
08:05:17.467 [QUIET] [system.out] DOFIRST 
08:05:17.467 [QUIET] [system.out] DOLAST 

Up-to-date Prüfung geschieht nur, wenn der Baum von Aufgaben gebaut und Aufgaben ausgeführt werden in Ordnung.

Da von dieser Prüfung kein Wert gespeichert wird, ist es nicht möglich, den aktuellen Status einer Aufgabe zu ermitteln, ohne alle Aufgaben auszuführen, von denen sie abhängt.

+0

Danke für die Klarstellung. – James

Verwandte Themen