Book Image

Gradle Essentials

By : Abhinandan Maheshwari
Book Image

Gradle Essentials

By: 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 multiproject directory layout


A multiproject (or multimodule, as some prefer to call it) is a group of projects that are logically related to each other and often have the same develop-build-release cycles. The directory structure is important for laying out the strategy for building such projects. Typically, a top-level root project contains one or more subprojects. The root project may contain source sets of its own, may contain only the integration tests that test the integration of the subprojects, or may even act just as a master build without any source and tests. Gradle supports every such configuration.

The arrangement of subprojects relative to the root project may be flat, that is, all the subprojects are the direct children of the root project (as shown in sample 1) or are hierarchical, such that the subproject may also have nested child projects (as shown in sample 2) or any hybrid directory structure.

Let's refer to the following directory structure as sample 1:

sample1
├...