Book Image

Gradle Effective Implementations Guide - Second Edition

By : Hubert Klein Ikkink
Book Image

Gradle Effective Implementations Guide - Second Edition

By: Hubert Klein Ikkink

Overview of this book

Gradle is a project automation tool that has a wide range of applications. The basic aim of Gradle is to automate a wide variety of tasks performed by software developers, including compiling computer source code to binary code, packaging binary codes, running tests, deploying applications to production systems, and creating documentation. The book will start with the fundamentals of Gradle and introduce you to the tools that will be used in further chapters. You will learn to create and work with Gradle scripts and then see how to use Gradle to build your Java Projects. While building Java application, you will find out about other important topics such as dependency management, publishing artifacts, and integrating the application with other JVM languages such as Scala and Groovy. By the end of this book, you will be able to use Gradle in your daily development. Writing tasks, applying plugins, and creating build logic will be your second nature.
Table of Contents (18 chapters)
Gradle Effective Implementations Guide - Second Edition
About the Author
About the Reviewer

Working with multi-project builds

Let's start with a simple multi-project structure. We have a root project called garden with two other projects, tree and flower. The project structure is as follows:

└── garden
    ├── flower 
    └── tree 

We learn how we can invoke tasks in a multi-project build as follows:

  1. We will add a new printInfo task to each of these projects. The task will print the name of the project to System.out. We must add a build.gradle file to each project with the following contents:

            task printInfo << { 
                println "This is ${}" 
  2. To execute the task for each project, we must first enter the correct directory and then invoke the task with Gradle. We can also run build.gradle for a specific project with the -b argument of Gradle. We will get the following output if we run the printInfo task for each project:

    garden $ gradle -q printInfo
    This is garden
    garden $ cd tree
    tree $ gradle -q printInfo
    This tree
    tree $ cd ..
    garden $ gradle...