Skip to content
Tiago edited this page Jul 16, 2023 · 2 revisions
   .----.-.
  /    ( o \
 '|  __ ` ||
  |||  ||| -'

O que é

Gradle é uma ferramenta moderna de automação de build que se destaca por ser muito flexível e poderosa. Ele permite definir tarefas customizadas e tem uma linguagem de configuração muito mais expressiva baseada em Groovy ou Kotlin. Neste projeto estamos usando o Kotlin como experimento.

Para uma introdução rápida ao Gradle, confira este vídeo (legendas pt-br): Gradle em 100 segundos

Justificativa

Ao comparar Maven e Gradle, existem prós e contras para cada um.

Maven, sendo uma ferramenta mais antiga, é amplamente utilizada e fornece uma estrutura padrão para projetos. No entanto, sua configuração é feita em XML, que pode ser bastante verbosa e difícil de navegar.

Gradle, por outro lado, oferece grande flexibilidade e poder para definir tarefas customizadas com uma sintaxe mais clara e concisa. Ele oferece a execução incremental e o daemon Gradle para acelerar o processo de build. Como a build é salva em cache, somente se compila as diferenças referentes à ultima build, o que faz a execução ser extremamente rápida.

Embora o Gradle não seja tão amplamente usado quanto o Maven, ao longo dos anos vem sendo mais utilizado. Mas como a comunidade em torno é menor, a melhor fonte de informação segue sendo a própria documentação, que é um tanto complexa.

Instalação

A instalação do Gradle é opcional, já que os comandos básicos são executados via wrapper. No entanto, se você preferir instalar o Gradle em seu sistema, você pode baixar o Gradle aqui.

Documentação oficial de instalação (eng)

Conhecendo Gradle — Instalação de Rodrigo Mendes (pt-br)

IDE

Ao trabalhar com Gradle e Kotlin, alguns plugins ou extensões podem ser necessários para proporcionar uma experiência de desenvolvimento ideal.

VSCode

Para o VSCode, além da extensão oficial do Gradle, a extensão do Kotlin também é recomendada para um melhor suporte ao Kotlin.

Mais informações sobre a configuração do Gradle no VSCode podem ser encontradas no guia oficial do VS Code para ferramentas de build Java.

IntelliJ

O IntelliJ IDEA já possui suporte nativo ao Gradle e ao Kotlin. Portanto, nenhuma extensão adicional é necessária. No entanto, é importante verificar se a versão mais recente do IntelliJ IDEA e do plugin Kotlin estão instaladas para garantir a compatibilidade.

Principais comandos

Aqui estão alguns dos comandos Gradle mais comuns que você usará em projetos Java.

Para usuários do Windows, substitua ./gradlew por gradlew.

  • ./gradlew tasks: Lista todas as tarefas disponíveis no seu projeto Gradle.
  • ./gradlew build: Constrói o projeto completo. Isso compila e testa o código, cria pacotes JAR e gera documentação.
  • ./gradlew assemble: Compila o código e cria pacotes JAR, mas não executa testes.
  • ./gradlew check: Executa todos os testes mas não compila o código nem cria pacotes JAR.
  • ./gradlew clean: Limpa o diretório de build, removendo todos os arquivos gerados anteriormente.
  • ./gradlew test: Executa os testes unitários.
  • ./gradlew run: Executa a aplicação. Este comando é específico para projetos que possuem um método main.

Esquema de Pastas

Segue abaixo a estrutura de pastas do projeto (16/07/2023)

.
├── gradle
│   └── wrapper
└── src
    ├── main
    │   ├── java
    │   │   └── org
    │   │       └── ravin
    │   │           ├── controllers
    │   │           │   └── interfaces
    │   │           ├── dao
    │   │           │   ├── dados
    │   │           │   └── interfaces
    │   │           ├── models
    │   │           ├── services
    │   │           │   └── interfaces
    │   │           ├── utils
    │   │           │   └── enums
    │   │           └── views
    │   │               ├── cardapio
    │   │               ├── cliente
    │   │               ├── comanda
    │   │               ├── estoque
    │   │               ├── funcionario
    │   │               └── mesa
    │   └── resources
    │       └── images
    └── test
        ├── java
        │   └── org
        │       └── ravin
        │           ├── controllers
        │           ├── dao
        │           └── services
        └── resources