Gradle Task: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 34: Line 34:
Each task has a <span id='Task_Name'></span>'''name''', which is unique within the context of its owning project. The name must not contain dashes. Since different projects may contain tasks with the same name, a task is uniquely identified by its <span id='Task_Path'></span>'''path''' in the context of a multi-project build. The path is the concatenation of the task owning project name and the task name, separated by the ":" character.
Each task has a <span id='Task_Name'></span>'''name''', which is unique within the context of its owning project. The name must not contain dashes. Since different projects may contain tasks with the same name, a task is uniquely identified by its <span id='Task_Path'></span>'''path''' in the context of a multi-project build. The path is the concatenation of the task owning project name and the task name, separated by the ":" character.
==Task Action==
==Task Action==
Each task contains a list of actions, which are executed in order in which they were added to the list. Actions can be added to the task by invoking the Task API methods [https://docs.gradle.org/current/dsl/org.gradle.api.Task.html#org.gradle.api.Task:doFirst(org.gradle.api.Action) doFirst(Action|Closure)] and [https://docs.gradle.org/current/dsl/org.gradle.api.Task.html#org.gradle.api.Task:doLast(org.gradle.api.Action) doLast(Action|Closure)].
Each task contains a list of actions, which are executed in order in which they were added to the list. Actions can be added to the task by invoking the Task API methods [https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#doFirst-groovy.lang.Closure- doFirst(Action|Closure)] and [https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#doLast-groovy.lang.Closure doLast(Action|Closure)].
 
==Task Action Closure==
==Task Action Closure==



Revision as of 20:27, 4 October 2020

External

Internal

Overview

A task represents a well defined piece of work that is executing during a build, such as compiling Java classes or creating a distribution file. The goal of a Gradle execution, also known as a Gradle build, is to execute a set of tasks, in sequence.

A tasks belongs to a project. Each project comes with a set of pre-defined, built-in tasks. Each declared plugin may add its own tasks. New simple tasks can be defined in-line in build.gradle or in script plugins. Tasks whose implementations are available on the build's classpath can be declared and configured in build.gradle, as enhanced tasks, and thus made available for use during the build. Complex tasks can even be fully defined in-line or in script plugins, by providing the task code in-line in the script, though this is not a recommended practice, as it does not encourage modularization, encapsulation and sharing.

Any task instance implements org.gradle.api.Task interface. Most tasks extend directly or indirectly org.gradle.api.DefaultTask.

Declaring, configuring and defining tasks is done via corresponding Project API methods:

Project.task(String name)
Project.task(String name, Closure configureClosure)
Project.task(String name, Action<? super Task> configureAction)
Project.task(Map<String, ?> args, String name)
Project.task(Map<String, ?> args, String name, Closure configureClosure)

A Gradle build executes the task specified on command line, including all explicit and implicit dependencies of the task.

./gradlew build

Task Structure

Task Name and Path

Each task has a name, which is unique within the context of its owning project. The name must not contain dashes. Since different projects may contain tasks with the same name, a task is uniquely identified by its path in the context of a multi-project build. The path is the concatenation of the task owning project name and the task name, separated by the ":" character.

Task Action

Each task contains a list of actions, which are executed in order in which they were added to the list. Actions can be added to the task by invoking the Task API methods doFirst(Action|Closure) and doLast(Action|Closure).

Task Action Closure

Task action closures can be used to define custom simple tasks, in-line in build.gradle or in a script plugin.

@TaskAction

Task Lifecycle

The tasks are instantiated and configured. The task's actions are executed in the execution phase.

Declaring a Task

With DSL

Programmatically

Task Configuration Closure

Task Dependencies and Ordering

https://docs.gradle.org/current/dsl/org.gradle.api.Task.html#N18D13

Explicit Dependencies

Implicit Dependencies

Defining Custom Tasks

Extending Gradle with Custom Tasks

Built-in Tasks

Each build exposes a set of built-in tasks, that can be used right away without any additional configuration or loading any plugin:

TO DEPLETE

Gradle Task TODEPLETE