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.[2] Gradle usa um grafo acíclico dirigido ("DAG") para determinar a ordem em que as tarefas possam ser executadas.

Gradle
Logótipo
Gradle
DesenvolvedorHans Dockter, Adam Murdoch, Szczepan Faber, Peter Niederwieser, Luke Daley, Rene Gröschke, Daz DeBoer, Steve Appling
Lançamento2007 (16–17 anos)
Versão estável8.6[1] (2 de fevereiro de 2024; há 2 meses)
Escrito emJava, Groovy
Sistema operacionalMultiplataforma
Gênero(s)Automação de compilação
LicençaApache License 2.0
Estado do desenvolvimentoAtivo
Página oficialwww.gradle.org
Repositóriogithub.com/gradle/gradle

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,[3] 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

apply plugin: 'java'

Executando o gradle build resultará em

> gradle build:compileJava:processResources:classes:jar:assemble:compileTestJava:processTestResources:testClasses:test:check:buildBUILD SUCCESSFUL

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

apply plugin: 'java'sourceSets.main.java.srcDirs = ['src/java']

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

<project>  <target name="ant.target">    <echo message="Running ant.target!"/></target></project>

build.gradle

ant.importBuild 'build.xml'

Executando o gradle ant.target irá resultar em

> gradle ant.target:ant.target[ant:echo] Running ant.target!BUILD SUCCESSFUL

Referências

Ligações externas