Gradle Concepts

From NovaOrdis Knowledge Base
Revision as of 19:45, 17 May 2018 by Ovidiu (talk | contribs) (→‎Task)
Jump to navigation Jump to search

External

Internal

Overview

Gradle is a general-purpose build tool, which can build pretty much anything its configuration scripts declare. It is primarily used to build Java and Groovy, but it can build other languages as well.

Configuration Scripts

The configuration scripts are written in the Gradle build language, which is a DSL and a Groovy extension. A build is configured by three types of configuration scripts, which together express build requirements and inform the build runtime: build scripts, a settings script and an init script. Each of those scripts contains executable statements and script blocks, which are a special case of executable statement, consisting in a method invocation on a closure. The logic expressed in a specific script applies to its delegate object. Though syntax is similar for all three scripts, specific blocks must make sense with the delegate object. The corresponding delegate objects for all three types of configuration scripts will be described below.

Gradle Configuration Scripts.png

A configuration script may contain statements, script blocks, and any elements allowed in a Groovy script, such as method and class definitions.

A statement may be a method call, property assignment and local variable definition.

A script block is method call that takes a configuration closure as an argument. Executing the script block results in modification of the associated delegate object, based on the content of the closure. Equivalent terminology, often used in documentation, is to delegate the closure against the target object. This means that the closure will be executed in scope of the class of the target instance. For all Groovy closures, it is the default parameter passed to the closure. A build configuration that does not declare any plugin has a set of standard script blocks. Plugins may, and usually do, add new script blocks.

Each configuration script implements the Script interface, which exposes a number of useful methods and properties.

Settings Script

Settings Script

Build Script

Build Script

Init Script

Init Script

Build Lifecycle and Gradle Objects

Each build run results in the instantiation of one or more of these core Gradle types. It starts with a Settings and a Gradle instance, one or more Projects. A Gradle execution results in instantiation and execution of task. Depending on the actual configuration of the build, many others objects are instantiated and used. All Gradle core types are listed here.

Go through the lifecycle without plugins. Understand. Then introduce essential plugins.


Settings

Settings

Gradle

Gradle

Project

A Project is the main API to use to interact with Gradle. All top level statements within a build script are delegated to the corresponding Project instance.

Project

Task

A Task represents a single atomic piece of work for a build.

Task

Fit Containers in.

Extensions, as in publishing extension.

Plugins

Most of Gradle's power comes from external plugins.

  • Java plugin.
  • Maven publishing plugin.