De que se trata o artigo:

Introdução prática ao Apache Maven, identificando suas principais características e como sua utilização pode aumentar a qualidade e o entendimento de qualquer projeto Java.

Para que serve:

O Maven é utilizado para gerenciar "builds" de projetos. Com ele é possível configurar um ambiente de desenvolvimento padronizado seguindo boas práticas, permitindo compilação, gerência de dependências e distribuição de uma aplicação editando apenas um arquivo e utilizando conceitos de convenção sobre configuração.

Em que situação o tema é útil:

A utilização do Maven possibilita um ganho de qualidade e padronização em projetos. Rotinas como a criação da estrutura do projeto, compilação e distribuição são pré-definidas automaticamente, liberando o desenvolvedor para trabalhar na aplicação em si e não na configuração do ambiente.

Introdução ao Apache Maven:

O arquivo pom.xml é considerado o coração de um projeto Maven. Com a configuração de poucos descritores é possível gerenciar dependências, centralizar documentação sobre o projeto e principalmente compilar e distribuir uma aplicação. Contando ainda com o recurso de archetypes é possível criar inúmeros tipos de aplicações diretamente pelo Maven de forma simples e rápida.

Este artigo apresenta uma introdução ao Apache Maven versão 2.x, demonstrando através de um exemplo prático que até o famoso “Hello World” pode tirar proveito do Maven e ilustrando como desenvolvedores podem se beneficiar de seu uso para ganhar agilidade e padronização em seus projetos.

O Maven é uma ferramenta utilizada para gerenciar projetos em Java e simplificar a vida do programador, auxiliando no ciclo de desenvolvimento incluindo compilação, controle de bibliotecas, distribuição e relatórios estatísticos. O projeto nasceu a partir das dificuldades encontradas principalmente em gerenciar a compilação de projetos e no controle de bibliotecas.

O Maven possui funcionalidades similares ao mais conhecido Apache Ant, mas utiliza um mecanismo de configuração declarativo e baseado no conceito de convenção ao invés de configuração. Isso permite, por exemplo, a compilação e a distribuição de uma aplicação com um arquivo de configuração mínimo, apenas seguindo algumas convenções estabelecidas. A configuração do Maven se baseia em um único arquivo, chamado pom.xml, que contém os metadados de um projeto. É a partir deste arquivo que toda a mágica por trás do Maven acontece.

Principais objetivos do Maven

Simplificar a criação e distribuição de projetos

Iniciar um novo projeto do zero não precisa ser necessariamente uma tarefa complicada e tediosa. Pensando nisso o Maven conta com um recurso extremamente útil, chamado archetype. Este recurso permite criar toda a estrutura de um projeto automaticamente. Para isso, existem vários tipos de archetypes disponíveis, entre eles:

  • maven-archetype-webapp: cria a estrutura de uma aplicação web básica;
  • maven-archetype-j2ee-simple: cria a estrutura de uma aplicação Java EE simples;
  • struts2-archetype-blank: cria a estrutura de uma aplicação Struts2 básica;
  • myfaces-archetype-helloworld: cria a estrutura de uma aplicação JSF utilizando MyFaces.

Outra etapa essencial em qualquer projeto é sua distribuição. Sem uma padronização e automação por uma ferramenta como Ant ou Maven, este processo torna-se repetitivo, tedioso e sujeito a falhas.

Através do Maven o processo de empacotamento de uma aplicação se restringe a apenas uma linha de comando: mvn package, que se encarrega de criar o arquivo de distribuição do seu projeto (por exemplo, .jar, .war ou .ear).

Promover melhores práticas como a definição de um layout padrão para diretórios

Muito da simplicidade e poder do Maven pode ser atribuído à padronização que ele propõe. Um projeto no Maven conta com uma estrutura básica idêntica a outro projeto Maven. Isso quer dizer que um desenvolvedor que já trabalhou com Maven em algum projeto vai se sentir muito confortável em qualquer outro projeto que utilize esta ferramenta. Dessa maneira, não será gasto tempo adicional criando ou inventando novas estruturas de diretórios, convenções ou scripts Ant customizados para cada projeto.

A estrutura inicial de diretórios de uma aplicação simples pode ser visto na Figura 1.

Estrutura de um projeto básico gerado pelo Maven
Figura 1. Estrutura de um projeto básico gerado pelo Maven

Para uma aplicação web a estrutura de diretórios será semelhante à Figura 2.

Estrutura de um projeto web gerado pelo Maven
Figura 2. Estrutura de um projeto web gerado pelo Maven

Cada diretório da estrutura tem um propósito definido:

  • src/main/java: código fonte da aplicação organizado em pacotes;
  • src/main/resources: recursos que a aplicação necessita;
  • src/main/webapp: diretório para aplicações web, web.xml, imagens, HTML;
  • src/test/java: testes unitários;
  • ...
    Quer ler esse conteúdo completo? Tenha acesso completo