Chapter 2. Custom Plug-Ins
Plug-In Philosophy
With its standard domain-specific language (DSL) and core plug-ins, Gradle intends to be a powerful build tool without the addition of any extensions or add-ons. Most common build tasks can be accomplished with these tools as configured by simple build files. Common builds are easy to write; however, common builds are not so common.[7]
Projects that begin as simple collections of source files and a few static resources bundled into a standard archive format often evolve into complex multi-project hierarchies with requirements to perform database migration, execute repetitive transformations of static resources, perform and validate automated deployments, and accomplish still more build automation that doesn’t always easily conform to an existing standard or set of parameters.
Developing such a build is a specialized form of software development. The software in question is not the code that automates the business domain of the project itself, but code that automates the build domain of the project. This specialized code is software nevertheless, and it is precisely this kind of development that Gradle aims to facilitate.
To write this kind of code, an untutored Gradle developer might simply write a large amount of imperative Groovy code inside doLast() clauses of a build file. However, this code would be untestable, and would lead to large and unreadable build files of the kind other build tools are often criticized for creating. This practice ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access