Book Image

Gradle Essentials

By : Kunal Dabir, Abhinandan Maheshwari
Book Image

Gradle Essentials

By: Kunal Dabir, Abhinandan Maheshwari

Overview of this book

Gradle is an advanced and modern build automation tool. It inherits the best elements of the past generation of build tools, but it also differs and innovates to bring terseness, elegance, simplicity, and the flexibility to build. Right from installing Gradle and writing your first build file to creating a fully-fledged multi-module project build, this book will guide you through its topics in a step-by-step fashion. You will get your hands dirty with a simple Java project built with Gradle and go on to build web applications that are run with Jetty or Tomcat. We take a unique approach towards explaining the DSL using the Gradle API, which makes the DSL more accessible and intuitive. All in all, this book is a concise guide to help you decipher the Gradle build files, covering the essential topics that are most useful in real-world projects. With every chapter, you will learn a new topic and be able to readily implement your build files.
Table of Contents (17 chapters)
Gradle Essentials
About the Authors
About the Reviewers

Organizing build logic in multiproject builds

Gradle gives us the flexibility to create one build file for all projects or individual build file per project; you can also mix and match. Let's start with adding a simple task to our root project's build.gradle:

task sayHello << {
    println "Hello from multi-project build"

We are creating a task with an action that just prints a message. Now, let's check what tasks are available on our root project. From the root directory, let's call the task tasks:

$ gradle tasks

Other tasks


No wonder, the sayHello task is available on the root project. However, what if we just want to see the tasks available on a subproject? Let's say :repository. For a multiproject build, we can call tasks on any nested project using the gradle <project-path>:<task-name> syntax or by going into the subproject directory and executing gradle <task-name>. So now, if we execute the following code, we won't see the sayHello...