Gradle
Desenvolvedor | Hans Dockter, Adam Murdoch, Szczepan Faber, Peter Niederwieser, Luke Daley, Rene Gröschke, Daz DeBoer, Steve Appling |
Lançamento | 2007 (16–17 anos) |
Versão estável | 8.6[1] (2 de fevereiro de 2024 ) |
Escrito em | Java, Groovy |
Sistema operacional | Multiplataforma |
Gênero(s) | Automação de compilação |
Licença | Apache License 2.0 |
Estado do desenvolvimento | Ativo |
Página oficial | www |
Repositório | github |
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 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
[editar | editar código-fonte]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
:build
BUILD 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
[editar | editar código-fonte]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
- ↑ «Gradle l Releases». Gradle.org. 25 de novembro de 2022. Consultado em 10 de fevereiro de 2024
- ↑ «"Como Começar Com O Gradle"»
- ↑ «"Introdução · a Construção de Projetos em Java com Gradle"»