Ich lerne Gradle und versuche zu verstehen, wie Eingabe- und Ausgabedateien bestimmen, ob eine Aufgabe aktuell ist.Gradle Ein- und Ausgänge
Diese Aufgabe ist nie aktuell, auch wenn sich die Build-Datei nicht ändert.
task printFoo() {
inputs.file(getBuildFile())
doLast {
println 'foo'
}
}
Diese Aufgabe ist immer aktuell, auch wenn sich die Build-Datei ändert.
Ich hatte erwartet, dass beide Beispiele die Aufgabe nur veraltet betrachten, wenn sich die Build-Datei ändert, und ansonsten auf dem neuesten Stand. Was vermisse ich?
Ich habe erneut mit mehreren Dateien getestet: Status ist immer aktuell, wenn nur die Ausgabe angegeben ist. Wenn sowohl Eingabe als auch Ausgabe angegeben sind, ändert sich der Status wie erwartet (auch wenn Eingabe und Ausgabe dieselbe Datei sind). Ich habe diese Antwort basierend auf der Aussage akzeptiert: "_Gradle benötigt Zeitstempel für Eingaben und Ausgaben._" Meine Tests zeigen, dass beide benötigt werden. – jaco0646
Es klingt wie ein Fehler. Aber ich habe keine Ahnung, wer die Ausgabedateien ändern sollte und wann dies zu tun ist, für eine Aufgabe, bei der nur Ausgaben als veraltet angesehen werden. Sollten Sie während der Konfigurationsphase dieser Aufgabe die Ausgänge berühren/ändern? Die Semantik ist meiner Meinung nach nicht klar. Es empfiehlt sich, immer Ein- und Ausgänge für zuverlässiges Verhalten anzugeben. –