Use Gradle as build tool
Context and Problem Statement
Which build tool should be used?
Considered Options
Decision Outcome
Chosen option: “Gradle”, because it is lean and fits our development style.
Pros and Cons of the Options
Maven
- Good, because there is a plugin for almost everything
- Good, because it has good integration with third party tools
- Good, because it has robust performance
- Good, because it has a high popularity
- Good, if one favors declarative over imperative
- Bad, because getting a dependency list is not straight forward
- Bad, because it based on a fixed and linear model of phases
- Bad, because it is hard to customize
- Bad, because it needs plugins for everything
- Bad, because it is verbose leading to huge build files
Gradle
- Good, because its build scripts are short
- Good, because it follows the convention over configuration approach
- Good, because it offers a graph-based task dependencies
- Good, because it is easy to customize
- Good, because it offers custom dependency scopes
- Good, because it has good community support
- Good, because its performance can be 100 times more than maven’s performance.
- Bad, because not that many plugins are available/maintained yet
- Bad, because it lacks a wide variety of application server integrations
- Bad, because it has a medium popularity
- Bad, because it allows custom build scripts which need to be debugged
Ant
- Good, because it offers a lot of control over the build process
- Good, because it has an agile dependency manager
- Good, because it has a low learning curve
- Bad, because build scripts can quickly become huge
- Bad, because everything has to be written from scratch
- Bad, because no conventions are enforced which can make it hard to understand someone else’s build script
- Bad, because it has nearly no community support
- Bad, because it has a low popularity
- Bad, because it offers too much freedom