Task incrementali e controlli di aggiornamento
Renda i task personalizzati veloci e corretti dichiarando input e output, così Gradle può saltare il lavoro già aggiornato.
Task incrementali e controlli di aggiornamento è una lezione Groovy & Gradle: JVM Automation and Build Engineering gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Groovy & Gradle: JVM Automation and Build Engineering, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Groovy & Gradle: JVM Automation and Build Engineering include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Why Tasks Get Skipped
Gradle is fast because it does not redo work. If a task ran before and nothing it depends on changed, Gradle marks it UP-TO-DATE and skips it. You enable this by declaring inputs and outputs.
Inputs and Outputs
Every task can declare what it reads (inputs) and what it produces (outputs). Gradle hashes them to decide whether to run.
Declaring File Inputs
Annotate or register input files so Gradle watches them for changes.
tasks.register('process') {
inputs.file 'data/in.txt'
outputs.file 'build/out.txt'
}The Up-to-Date Decision
On each run Gradle compares current input/output hashes to the last run. If both match, the task is skipped; if any input changed, it re-runs.
Property Inputs
Non-file inputs (a flag, a version string) are declared with inputs.property so changing them also invalidates the cache.
tasks.register('gen') {
inputs.property 'version', project.version
outputs.dir 'build/gen'
}Custom Task Types
For reusable logic, write a task class with annotated properties: @InputFile, @OutputFile, @Input. Gradle reads the annotations automatically.
An Annotated Task Class
Annotations tell Gradle how to track each property without manual inputs/outputs wiring.
class Copy extends DefaultTask {
@InputFile File source
@OutputFile File dest
@TaskAction void run() { dest.text = source.text }
}Incremental Inputs
For tasks over many files, @Incremental inputs let the action process only the files that actually changed since last run.
The Build Cache
Beyond up-to-date checks, the build cache can reuse outputs from a previous run on any machine, keyed by the same input hashes — huge for CI.
org.gradle.caching=trueCommon Mistakes
Forgetting to declare an input is the classic bug: Gradle skips a task that should have re-run, producing stale output. Always declare every input that affects the result.
Forcing a Rerun
To verify caching or work around a stale state, run with --rerun-tasks to ignore up-to-date checks for one build, or use outputs.upToDateWhen { false } to mark a task as never up to date.
gradle build --rerun-tasksQuick Check
Test your incremental build knowledge.
Recap
You learned to build fast, correct tasks:
- Gradle skips tasks whose inputs and outputs are unchanged
- Declare files with
inputs.file/outputs.fileand values withinputs.property - Custom task classes use
@InputFile/@OutputFileannotations - The build cache reuses outputs across machines
- Undeclared inputs cause stale, incorrect skips
Impara Groovy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 12
- Lezioni
- 48
Domande Frequenti
La lezione «Task incrementali e controlli di aggiornamento» è gratuita?
Sì — il testo completo di «Task incrementali e controlli di aggiornamento» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Groovy & Gradle: JVM Automation and Build Engineering, passa a CoddyKit PRO. Il corso Groovy & Gradle: JVM Automation and Build Engineering include 4 lezioni in totale.
Cosa imparerò in «Task incrementali e controlli di aggiornamento»?
Renda i task personalizzati veloci e corretti dichiarando input e output, così Gradle può saltare il lavoro già aggiornato. Eserciti Groovy & Gradle: JVM Automation and Build Engineering con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Groovy & Gradle: JVM Automation and Build Engineering?
Non è richiesta alcuna esperienza precedente. Groovy & Gradle: JVM Automation and Build Engineering su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Task incrementali e controlli di aggiornamento»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Groovy & Gradle: JVM Automation and Build Engineering?
Sì. Ogni lezione Groovy & Gradle: JVM Automation and Build Engineering include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Definizione di attività personalizzate
- Tipi e azioni delle attività
- Proprietà e configurazione delle attività
- Task incrementali e controlli di aggiornamento