Gradle sem medo — Parte 3 — Novo Projeto e Wrapper

Flavio Andrade
5 min readDec 28, 2019

--

Não vamos entrar no mérito de como instalar o Gradle pois existem diversos lugares ensinando a fazer isso além do próprio site do Gradle. Mas vamos discutir como criar um novo projeto usando o Gradle, que apesar de simples é comum não sabermos por onde começar. Também vamos falar sobre os arquivos que ele cria e a estrutura básica gerada.

Criando um novo projeto com Gradle

Podemos utilizar o wizard da sua IDE para criar um novo projeto com Gradle ou utilizar-mos o próprio Gradle, da forma como eu prefiro.

Primeiro vamos criar um nova pasta que será a pasta do nosso projeto:

mkdir gradle-sem-medocd gradle-sem-medo

Dentro da pasta do nosso projeto podemos visualizar algumas tasks que o Gradle nos disponibiliza para uso geral:

gradle tasks

Temos como resultado algo como:

Possuímos basicamente dois blocos de tasks, um que possui tasks que auxiliam na criação de um novo projeto e outro que servem como ajuda para diversos fins.

Nas tasks de criação de projeto temos a task init que iremos utilizar e a task wrapper que cria apenas o wrapper para deixar no projeto, vamos falar em breve do que se trata isso.

gradle init

A task init é bem simples, basta seguir o passo a passo e no final seu projeto estará criado e com um "hello world" de exemplo. Aqui no meu caso eu criei um projeto Kotlin mas pode-se observar abaixo que através deste wizard temos também as opções de projetos C++, Groovy, Java e Swift.

Um ponto atenção é que ele pergunta qual "linguagem" iremos utilizar no Gradle (select build script DSL). Nesta série de artigos estamos trabalhando com Groovy, então recomendo escolher o mesmo para conseguir seguir todos os exemplos.

Se você verificar novamente as tasks verá que agora existem muito mais tasks, a maioria relacionadas ao projeto recem criado como build, run e test.

gradle tasks

Wrapper

Podemos verificar que o projeto criado possui além da estrutura básica de um projeto Java/Kotlin e o arquivo build.gradle também possuem outros arquivos e diretórios do Gradle.

Projeto aberto no IntelliJ IDEA

No Gradle (e também no Maven) temos o conceito de wrapper que é um versão do Gradle que é baixada para executar o projeto. Isso é muito útil em diversos casos, como por exemplo, nenhum desenvolvedor precisar instalar o Gradle em sua máquina para executar o projeto. Além disso você tem a certeza que todo mundo está fazendo o build do projeto com a mesma versão do Gradle, evitando possíveis erros entre versões diferentes do Gradle. E por estes e outros motivos utilizar o wrapper do Gradle é recomendado.

Fonte: https://docs.gradle.org/current/userguide/gradle_wrapper.html

Para entender o wrapper melhor, vamos começar pelo diretório gradle:

Nele temos um .jar que contém a lógica para realizar o download e extração da distribuição do Gradle e também um properties com metadados que contém informações como onde encontra-se a distribuição do Gradle para download e onde estes binários devem ser salvos.

Outro ponto importante do wrapper são os arquivos gradlew (Gradle Wapper):

Como a ideia é que todos utilizem este Gradle "portátil" não conseguiremos fazer isso utilizando o comando gradle na linha de comando. Por isso temos estes dois arquivos, o bat para Windows e o sh para *nix. Então no Linux, por exemplo, seus comandos passariam a ser executados da seguinte forma:

./gradlew tasks

Customizando o wrapper

O objetivo desta série é discutir os principais pontos do Gradle e não as exceções, mas achei válido abrir esta exceção para comentar que apesar desta estrutura básica do wrapper atender a maioria das pessoas, é possível que tenhamos algumas restrições como acesso restrito a internet impossibilitando baixar o Gradle. Para este e outros casos o Gradle permite que você customize de onde o donwload será feito, como de um servidor interno, por exemplo, e até mesmo onde os binários serão salvos entre outras customizações.

Para realizar estas customizações devemos fazer um override da task wrapper (no aquivo build.gradle) sobrescrevendo as propriedades que queremos customizar, como por exemplo a URL de donwload:

wrapper {
distributionUrl = https\://100.34.10.9/gradle-6.0.1-all.zip
}

As demais propriedades que podem ser customizadas do wrapper podem ser vistas aqui.

Conclusão

Neste artigo vimos a criação de um novo projeto utilizando Gradle e também entendemos o que é o wrapper e seus arquivos que costumamos ver em diversos projetos que utilizam Gradle.

No próximo artigo vamos explorar um pouco mais o conteúdo do build.gradle explorando também os plugins do Gradle, que são uma peça fundamental para o seu funcionamento.

Fontes

Artigos

--

--

Flavio Andrade

Apaixonado por programação, arquitetura de software e as coisas boas da vida.