Gradle
This GIF shows a side-by-side clean build of the Apache Commons Lang library using Maven and Gradle (without build cache). You can view the build scan for this build here. - Maven vs Gradle
Gradle vs Maven / Groovy vs Java
To do anything you have to know everything - The Problem with Gradle
The correct response to discovering the nature of Gradle is to abandon it, immediately. (Similarly Waf, and Scons.) The world does not need yet another one-or-two-language-target build system, or another build system as full general scripting language. Things work better when you don’t need expertise. A build system should be just barely powerful enough to do builds, but not powerful enough to mystify. A build system should work equally well for all the languages you might find you need to use. A build system should not need to be studied to be understood: isolated examples should suffice for each need. - HN
Migrating from Maven to Gradle
- Gradle does not support BOMs directly, but you can make use of them in your Gradle build files by applying the nebula-dependency-recommender-plugin.
Common plugins
Maven and Gradle share a common approach of extending the build through plugins. Although the plugin systems are very different beneath the surface, they share many feature-based plugins, such as:
- Shade/Shadow
- Jetty
- Checkstyle
- JaCoCo
- AntRun (see further down)
Plugins you don’t need
It’s worth remembering that Gradle builds are typically easier to extend and customize than Maven. In this context, that means you may not need a Gradle plugin to replace a Maven one. For example, the Maven Enforcer plugin allows you to control dependency versions and environmental factors, but these things can easily be configured in a normal Gradle build script.
Gradle Build Language Reference
A build script is also a Groovy script, and so can contain those elements allowed in a Groovy script, such as method definitions and class definitions.