Writing our first build script
We now have a running Gradle installation. It is time to create our first Gradle build script. Gradle uses the concept of projects to define a related set of tasks. A Gradle build can have one or more projects. A project is a very broad concept in Gradle, but it is mostly a set of components that we want to build for our application.
A project has one or more tasks. Tasks are a unit of work that need to be executed by the build. Examples of tasks are compiling source code, packaging class files into a JAR file, running tests, and deploying the application.
We now know a task is a part of a project, so to create our first task, we also create our first Gradle project. We use the gradle
command to run a build. Gradle will look for a file named build.gradle
in the current directory. This file is the build script for our project. We define our tasks that need to be executed in this build script file.
We create a new build.gradle
file and open this in a text editor. We type the following code to define our first Gradle task:
task helloWorld << { println 'Hello world.' }
With this code, we will define a helloWorld
task. The task will print the words Hello world.
to the console. The println
is a Groovy method to print text to the console and is basically a shorthand version of the System.out.println
Java method.
The code between the brackets is a closure. A closure is a code block that can be assigned to a variable or passed to a method. Java doesn't support closures, but Groovy does. As Gradle uses Groovy to define the build scripts, we can use closures in our build scripts.
The <<
syntax is, technically speaking, an operator shorthand for the leftShift()
method, which actually means add to. Therefore, here we are defining that we want to add the closure (with the println 'Hello world'
statement) to our task with the helloWorld
name.
First, we save build.gradle
, and with the gradle helloWorld
command, we execute our build:
$ gradle helloWorld :helloWorld Hello world. BUILD SUCCESSFUL Total time: 2.384 secs This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.12/userguide/gradle_daemon.html
The first line of output shows our line Hello world
. Gradle adds some more output such as the fact that the build was successful and the total time of the build. As Gradle runs in the JVM, every time we run a Gradle build, the JVM must be also started. The last line of the output shows a tip that we can use the Gradle daemon to run our builds. We will discuss more about the Gradle daemon later, but it essentially keeps Gradle running in memory so that we don't get the penalty of starting the JVM each time we run Gradle. This drastically speeds up the execution of tasks.
We can run the same build again, but only with the output of our task using the Gradle --quiet
or -q
command-line option. Gradle will suppress all messages except error messages. When we use the --quiet
(or -q
) option, we get the following output:
$ gradle --quiet helloWorld Hello world.