Gradle
# Gradle

Gradle é um sistema de automação de compilação de código aberto que se baseia nos conceitos de Apache Ant e Apache Maven e introduz uma linguagem de domínio específico (DSL) baseada em Groovy em vez do XML usado pelo Apache Maven para declarar a configuração do projeto. Gradle usa um grafo acíclico dirigido ("DAG") para determinar a ordem em que as tarefas possam ser executadas.
Gradle foi projetado para multi-projetos que podem ter alto crescimento, e suporta compilações incrementais quando inteligentemente determina quais partes da árvore estão atualizadas, de modo que qualquer tarefa dependente dessas partes não precisa ser reexecutada.
Os plugins iniciais são focados principalmente em torno do desenvolvimento e implantação de Java, Groovy e Scala, porém mais linguagens e fluxos de projeto são pretendidos.

## Exemplo de projeto Java

Considere o caso em que a estrutura de diretório de Maven é usado para códigos fonte e recursos Java. Esses diretórios são: src/main/java, src/main/resources, src/test/java e src/test/resources.
build.gradle
Executando o gradle build resultará em
O plugin Java emula muitos dos esperados ciclos de vida de Maven como tarefas no grafo acíclico direcionado de dependências para as entradas e saídas de cada tarefa. Para este caso simples, a tarefa de compilação depende de resultados das tarefas de checagem e montagem. Da mesma forma, a checagem depende do teste, e a montagem depende do jar.
Para projetos que não seguem as convenções do Maven, Gradle permite que a estrutura de diretório seja configurada. O exemplo a seguir daria suporte a um projeto que contém os ficheiros de origem em src/java em vez do src/main/java, imposto por convenção pelo Maven.
build.gradle

## Exemplo de migração Ant

Gradle tem uma forte integração com o Ant, e ainda trata o Ant como scripts que pode ser diretamente importados, durante a construção (building). O exemplo abaixo mostra um simplista alvo de Ant a ser incorporado como uma tarefa de Gradle.
build.xml
build.gradle
Executando o gradle ant.target irá resultar em