Track Ausführungszeit pro Aufgabe in gradle-Skript?
Was ist der eleganteste Weg, um die Ausführung mal auf, wie lange eine Aufgabe fand in einem gradle-build-Skript? Im optimalen Fall melden die Zeit unmittelbar gleichen oder nächsten Zeile, um den Namen der Aufgabe
:buildSrc:testClasses (0.518 secs)
:fooBar (28.652 secs)
- Wenn Sie ausführen von gradle mit der
--profile
parameter, erzeugt es einen Bericht inbuild/reports/profile
mit der Ausführung der Aufgabe mal drin... Ist das gut genug? - Das ist ein schöner Bericht, aber das erfordert einen zusätzlichen Schritt in der Erhebung alle build-bezogene Informationen, optimal die person, die Analyse unserer gradle Jenkins-jobs sehen können, die Ausführungszeit direkt inline. Thx trotzdem!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die sauberste Lösung ist die Umsetzung eines TaskExecutionListener (ich bin mir sicher, dass Sie behandeln können, das Teil) und registrieren Sie es mit
gradle.taskGraph.addTaskExecutionListener
.Nur zu erarbeiten, auf die andere Antwort: Wir wollten die gleiche Sache zu tun, sowie einen Bericht timings am Ende der
bauen, so langsam weicht offensichtlich sind (und die entsprechenden Parteien fühlen sich ein kleiner, aber gesund bisschen Scham, wenn Sie verlangsamen den bauen!).
Etwas wie den folgenden code kann gelöscht werden, in Ihrer top-level -
build.gradle
zu berichten Timing während der Ausführung oder nach Fertigstellung.timing[0] >= 50
gibt mir eine lästige Warnung 'getAt' in 'org.codehaus.groovig.- Laufzeit.DefaultGroovyMethods' nicht angewandt werden kann '(java.lang.Integer)' also ich habe ein ignorieren//noinspection GroovyAssignabilityCheck
über die bedingteIch weiß, das ist eine alte Frage, aber ich habe ein cooles plugin, das bedeutet das task-timing. Es ist wie @jlevy Antwort, aber mit etwas mehr Optionen zur Verfügung: https://github.com/passy/build-time-tracker-plugin
Dieses plugin von Pascal Hartig kontinuierlich protokolliert Ihre build-Zeiten und bietet CSV-und bar-chart-Zusammenfassungen. Der Entwickler empfiehlt es für die überwachung Ihres build-Zeiten im Laufe der Zeit, im Vergleich zu
--profile
die Ihnen eine Momentaufnahme für den aktuellen build.Dies ist, wie ich bin derzeit mit es:
Dies ist eine variation von jlevy Antwort oben, die geändert wurde, zu löschen, die Nutzung des öffentlich zugänglichen gradle
Clock
Klasse, die veraltet ist.Etwas wie den folgenden code kann gelöscht werden, in Ihrer top-level -
build.gradle
zu berichten Timing während der Ausführung oder nach Fertigstellung.Einfachen Sortierung machen würde @jlevy die Lösung sogar noch besser.
Auch für eine typische Produktion-Anwendungen, ich denke, die Schwelle von 50ms ist zu niedrig.
Wir in der Regel kümmern-Aufgaben, die mehr als 1 Sekunde.
Projekt/bauen.gradle
Terminal-Ausgabe: