Maven -> Gradle ◦ Gradle = Flexibility of Ant + Convenience of Maven + Power of Groovy ◦ Gradle makes simple things simple and complicated things possible.
Gradle does not impose a rigid process over people. Yet we think finding and describing YOUR process is very important. And so, Gradle has the very best support for describing it.” http://www.gradle.org
• Duplication of information • Dependencies were informal and arbitrary • Scripts were convoluted and unreadable • Scripts were unnecessarily large • Changes to a core project could require changes to dozens of other projects
place to change anything (DRY) • Shortest path to what you want to do • Concise, readable, powerful scripts • Dependencies are real and consistent • Full lifecycle functionality (build, test, packaging, upload, IDE metadata generation)
directory called buildSrc • Must extend DefaultTask and implement a task annotated with TaskAction • Can be abstracted to a separate project and imported at build time like any other dependency
in a hierarchy is desirable. ◦ Gradle also supports flat layouts. ◦ During initialization, settings.gradle sets up what projects are included in the build.
projects including the root ◦ subprojects – applies the configuration to just the subprojects ◦ Subprojects can override any or all configuration injected by the root.