Groovy & Gradle: JVM Automation and Build Engineering · Урок

Инкрементальные задачи и проверки актуальности

Ускоряйте пользовательские задачи и делайте их корректными, объявляя входные и выходные данные, чтобы Gradle мог пропускать уже выполненную работу.

Урок 4 из 413 шагов

«Инкрементальные задачи и проверки актуальности» — бесплатный урок Groovy & Gradle: JVM Automation and Build Engineering на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Groovy & Gradle: JVM Automation and Build Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Groovy & Gradle: JVM Automation and Build Engineering содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

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=true

Common 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-tasks

Quick 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.file and values with inputs.property
  • Custom task classes use @InputFile/@OutputFile annotations
  • The build cache reuses outputs across machines
  • Undeclared inputs cause stale, incorrect skips
Можно начать бесплатно

Изучай Groovy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «Инкрементальные задачи и проверки актуальности» бесплатный?

Да — полный текст урока «Инкрементальные задачи и проверки актуальности» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Groovy & Gradle: JVM Automation and Build Engineering, подпишись на CoddyKit PRO. Курс Groovy & Gradle: JVM Automation and Build Engineering содержит 4 уроков всего.

Чему я научусь в уроке «Инкрементальные задачи и проверки актуальности»?

Ускоряйте пользовательские задачи и делайте их корректными, объявляя входные и выходные данные, чтобы Gradle мог пропускать уже выполненную работу. Ты практикуешь Groovy & Gradle: JVM Automation and Build Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Groovy & Gradle: JVM Automation and Build Engineering?

Предыдущий опыт не требуется. Groovy & Gradle: JVM Automation and Build Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Инкрементальные задачи и проверки актуальности»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Groovy & Gradle: JVM Automation and Build Engineering?

Да. Каждый урок Groovy & Gradle: JVM Automation and Build Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение пользовательских задач
  2. Типы и действия задач
  3. Свойства и настройка задач
  4. Инкрементальные задачи и проверки актуальности
← Назад к Groovy & Gradle: JVM Automation and Build Engineering