Automação de Build

Introdução às ferramentas de automação de build para Java: entenda o que são artefatos, classpath, e por que usar Gradle ou Maven para gestão de dependências e versionamento.

Introdução

Neste tópico vamos falar sobre as ferramentas que normalmente são utilizadas em aplicações Java para tarefas rotineiras de build, como compilação, testes e cobertura, empacotamento, publicação…

As mais conhecidas ferramentas para esta finalidade são o Gradle e o Maven.

Glossário

  • Artefato: no contexto deste artigo, para o Java, um Artefato corresponde a uma biblioteca que é compilada a partir de outro projeto Java, resultando um arquivo de extensão JAR.
  • Classpath: no contexto deste artigo, para o Java, o classpath é o conjunto de recursos necessários para a execução da aplicação. Compoe esse classpath a próprias classes Java, resources, dependências (bibliotecas), etc.

Por que utilizar uma ferramenta?

Para quem está iniciando no Java, esta é uma pergunta clássica. Não basta aprender o Java, ainda tenho que aprender Maven ou Gradle? A resposta é: SIM. Não é algo que você precise se tornar especialista, mas é importante que conheça seu uso básico para não seguir caminhos complexos nos pontos que estas ferramentas resolvem com facilidade:

  1. Gestão de dependências: O motivo principal para usar uma dessas ferramentas. Nada de baixar arquivos JAR e colocar em uma pasta LIB, ok? Basta declarar o Artefato no Maven/Gradle e deixar que ele baixe e adicione o mesmo ao Classpath.

  2. Garantia de versionamento Todos os artefatos gerados ou dependências que nosso projeto terá serão necessariamente versionados. E uma determinada versão não deve ser regerada, gerando uma garantia que nosso código sempre utilizará a versão testada das dependências.

Gradle

O Gradle é a ferramenta de build mais moderna do ecossistema Java, usando uma DSL baseada em Groovy ou Kotlin. Arquivo de configuração: build.gradle (ou build.gradle.kts).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:3.2.0'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
}

Comandos principais:

  • ./gradlew build — compila, roda testes e empacota
  • ./gradlew test — executa os testes
  • ./gradlew bootRun — executa a aplicação Spring Boot

Maven

O Maven é a ferramenta mais tradicional, usando XML para configuração. Arquivo de configuração: pom.xml.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.exemplo</groupId>
    <artifactId>meu-app</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>3.2.0</version>
        </dependency>
    </dependencies>
</project>

Comandos principais:

  • mvn clean install — compila, roda testes e empacota
  • mvn test — executa os testes
  • mvn spring-boot:run — executa a aplicação Spring Boot

Conclusão

Tanto Gradle quanto Maven resolvem bem o problema de gestão de dependências e automação de build. O Gradle é mais moderno e flexível; o Maven é mais previsível e amplamente documentado. A escolha depende do seu projeto e equipe.

comments powered by Disqus
Criado com Hugo
Tema Stack desenvolvido por Jimmy