27 de mar de 2011

Por que decidi usar o Maven em meus projetos?

Ouvi falar do Maven pela primeira vez em 2002. Nesta época um Consultor da Accenture, Marcio, falou comigo mais ou menos assim: “Big Head”, estude Maven pois é o futuro!
Na época achei engraçado a forma o qual falou pelo seguinte motivo: ele nunca tinha feito alguma coisa com a ferramenta porém tinha entendido o conceito aplicado através dela.

Meses depois eu estava “tentando estudar” o Maven. Confesso que desisti logo, era um pouco difícil para mim entender na prática algo que conceitualmente não tinha vivenciado e entendido como aplicar com sucesso nos projetos os quais eu participei. Nesta época, por trabalhar em uma fábrica de software aplicar tais conceitos não eram fáceis. Logo então parei de estudar o Maven.
Alguns anos depois resolvi então vencer a barreira e tentar entender. Já trabalhava com Ant porém ainda tinha certa antipatia com o tal do Maven. Descobri que esta antipatia ocorreu por falta de conhecimento necessário para aplicá-los em um projeto real.
Após alguns dias estudando comecei a ver o Maven na prática funcionado. Quando você entende um pouco do Maven a primeira coisa que passa em sua mente é migrar todos os outros projetos que você possui para o Maven.
Abrindo parênteses:
Caso seja um projeto criado através do Eclipse, e sem ant, sugiro no futuro migrá-lo para maven, não é muito difícil, em breve estarei explicando como fazer isto.

Voltando ao assunto…
Como diz um grande amigo meu, Dirceu, na prática a teoria é outra! Pois é, nem sempre sem maturidade prática no uso do Maven é possível mudar tais projetos.

Automatização do Projeto
Quando consegui realmente aplicar o Maven, ou seja, dominar o que eu estava configurando através da ferramenta, consegui identificar uma grande vantagem: automatização. Atingi um nível considerável de automação do projeto com pouca configuração.  Quando trabalhamos com várias versões de sistemas ou bibliotecas é um pouco chato ficar criando pacotes via Eclipse. Nada contra o Eclipse. Eclipse é muito bom para o que ele tem de principal: edição de código. Para criação de pacotes para releases por exemplo nada melhor do que uma formalização escrita do que realmente é necessário fazer para compilar, gerar os pacotes e instalar uma aplicação.
Qualidade
O maven é um incentivador para criação de testes unitários. Isto mesmo, nada é mais fácil do que ter testes unitários organizados e que valide toda a sua aplicação para evitar possíveis bugs e até mesmo que pacotes sejam distribuídos com problemas. Achei interessante que através de testes unitários através no Maven posso garantir que novos pacotes sejam criados apenas se os testes forem validados com sucesso. Isto é configurável porém é algo muito interessante.
Falando em qualidade, veio a minha mente, qualidade de código. O Maven é integrado a uma ferramenta conhecida como Sonar, esta ferramenta é o que faltava no Maven para validação de qualidade de código porém de uma forma mais apresentável. O Maven por si só já cria relatórios estáticos sobre qualidade de código. Através do Sonar estes testes passaram para um novo patamar de avaliação do que pode ser melhorado em um sistema.
Vale a pena conferir em http://www.sonarsource.org/
Para ver os resultados gerados via Sonar visite a página http://nemo.sonarsource.org/
Plugins
O Maven  trabalha com o conceito de plugins, existem centenas(por que não milhares) de plugins disponíveis para uso. Como descobri tais plugins? Pesquisando no Google mesmo! Hoje quem não usa destes artifícios está perdido no meio de tantas informações. Quem sabe você achou este blog assim também!
Sugestão: antes de pensar em construir o seu próprio plugin pense em procurar algo que já faça o que você precisa. Não reinvente a roda. Estamos falando de projetos que na maioria das vezes possui um prazo para entrega!
Através do uso de plugins, já que tudo no Maven funciona como plugin, é possível baixar um código de um servidor remoto, compilar, aplicar testes unitários, gerar relatórios para qualidade de código, empacotar, validar o pacote gerado, versioná-lo em um determinado sistema de controle de versionamento e finalmente instalá-lo. Isto é tudo praticamente que precisamos controlar no ciclo de vida de construção de um projeto.
Para entender melhor como funciona o ciclo de vida do projeto visite o link.
Organização
Uma outra grande vantagem é o conceito de cascateamento de configurações através da estrutura de hierarquias de POM. Desta forma não é necessário duplicar configurações comuns entre projetos já que é possível definir que um projeto possui um projeto pai o qual ele herda todas as configurações. Que bom é ser filho! Mas lembre-se um dia você também será pai!
Estrutura Modular
A organização de projetos de forma modular é algo que facilita muito já que podemos criar um projeto dividido em seus respectivos módulos. Imagine juntar tudo isto sem organização, é como arrumar um guarda-roupas todo bagunçado sem saber por onde começar!
Afinal, quem toma conta dos filhos? Claro, os pais! No maven é parecido. Através da definição de um projeto pai,que possui projetos filhos ou módulos, iremos controlar todo o ciclo de construção dos projetos filhos. Pensando bem não é um projeto pai, é um projeto chefe, não? Tudo que é pedido para que seja realizado pelo projeto chefe os seus subordinados acabam fazendo também! Esta é uma explicação mais adequada sobre build modular!
Através desta organização, claro, seguindo as configurações comuns do Maven, o resultado será uma geração de pacotes simples, eficiente e rápida!
IDE para desenvolvimento
O Maven é independente de IDE para desenvolvimento(Eclipse, NetBeans etc.). Atualmente trabalho com o Eclipse e o NetBeans e através do Maven vivo abrindo o projeto nas duas plataformas. Claro, não sou louco, faço isto pois possuo projetos que são desenvolvidos em Java para Desktop e estes são muito mais fáceis para criá-los no NetBeans.
Mas de vez em quando, quando bate saudade, vou para a linha de comando e executo meus projetos por lá! Não ria, não é engraçado, também funciona assim. Apenas gosto de liberdade de escolha.
Conclusão
Poderia aqui explicar um monte de coisas sobre o Maven porém a melhor forma de aprendizado é prática de alguns conceitos explicados brevemente neste blog.
Sugiro que procure por exemplos de projetos na internet antes de começar a criar o seu próprio no Maven. Aprendi muita coisa exatamente vendo e entendo como os outros projetos funcionavam com Maven. Ah uma outra dica: procure por documentação e exemplos dos plugins. Um bom plugin possui um bom site de documentação e exemplos.
O tempo que você gasta reclamando da geração manual de pacotes porque não gasta o mesmo tempo mais um pouco aprendendo como usar esta ferramenta e veja você mesmo as vantagens.
Espero ter ajudado em alguma coisa. Este post possui alguns pontos pessoais e nem sempre irei agradar a todos os leitores.
Espero também por contribuições e comentários para que possamos melhorar ainda mais o blog.
Pesquisa personalizada

0 comentários:

Postar um comentário

Leia as regras:
Todos os comentários são lidos e moderados previamente.
Apenas os que respeitam as regras abaixo serão publicados:
- o comentário deve estar relacionado ao assunto do post
- não serão aceitos palavrões e ofensas ao redator do blog ou a terceiros
- não inclua links desnecessários no conteúdo do comentário
- se quiser deixar sua url, comente com a opção OpenId
Obs.: os comentários dos leitores não refletem a opnião do blog.