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 settings.gradle file


During initialization, Gradle reads the settings.gradle file to figure out which projects are to take part in a build. Gradle creates an object of type Setting. This happens even before any build.gradle is parsed. It is usually placed in the root project parallel to build.gradle. It is recommended to put setting.gradle in the root project, otherwise we have to explicitly tell Gradle the location to the settings file with the command-line option -c. Adding these two files to sample 1's directory structure would gives us something as follows:

sample1
├── repository
│   └── ...
├── services
│   └── ...
├── web-app
│   └── ...
├── build.gradle
└── settings.gradle

The most common use of settings.gradle is to enlist all the subprojects participating in the build:

include ':repository', ':services', ':web-app'

Also, this is all that is required to tell Gradle that the current build is a multiproject build. Of course, this not the end of the story and there is a lot more that...