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
Credits
About the Authors
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
Index

The polyglot application


For the code example, in this chapter, let's build a simple Quote of the Day service that returns a quote based on the day of the year. Since we might have fewer quotes in our store, the service should repeat the quotes in a cyclic fashion. Again, as usual, we will try to keep it as simple as possible to focus more on build aspects rather than the application logic. We will create two separate Gradle projects to implement the exact same functionality, once in Groovy then in Scala.

Before going into language-specific details, let's start with defining the QotdService interface, which just declares only one method, getQuote. The contract is, as long as we pass the same date, we should get the same quote back:

package com.packtpub.ge.qotd;

import java.util.Date;

interface QotdService {
  String getQuote(Date day);
}

The logic to implement getQuote can use the Date object in any manner, such as using the entire date including the time for determining the quote. However...