sábado, 23 de julho de 2016

Maven #1 - O que é o Maven?


Fala galera que acompanha o blog...

Hoje começamos uma série de posts sobre Maven ou Apache Maven.
Vamos estar explicando o que é, como configurar, como utilizar, porque utilizar, comandos utilizados, as fases do build, resolução de dependências e vários outros pontos importantes sobre esse "gerenciador de dependências".


Maven #1 - O que é o Maven?


Estou bastante animado com essa série de post, mesmo o Maven já estando no mercado a algum tempo, muita gente ainda não utiliza e logo vão perceber como essa ferramenta é muito poderosa e produtiva.

Quando estamos falando em desenvolvimento de sistemas, nos deparamos com um problema muito comum que é fazer com que toda a equipe construa o artefato final da mesma maneira com as bibliotecas e configurações corretas. Existem várias maneiras de tratar esse problema e a mais comum é utilizar alguma ferramenta que copie as dependências e configurações para lugares corretos e dessa forma esses arquivos sejam um pacote junto da aplicação.
A ferramenta muito utilizada para esse propósito no mundo Java é o Ant (http://ant.apache.org/). O Ant possibilita escrever scripts de "build" para copiar as bibliotecas, arquivos de configuração e qualquer outro arquivo necessário para o artefato da aplicação. Dessa forma garante-se que qualquer desenvolvedor possua os arquivos certos para gerar o artefato da aplicação localmente, garantindo que o artefato gerado é o mesmo que qualquer outro membro do time irá usar.

Mas onde será armazenado as bibliotecas externas para que o Ant as encontre?
A resposta mais óbvia e comum é guardá-las no repositório juntamente com o fonte, dessa forma a equipe compartilharão as mesmas dependências e os caminhos das pastas são mantidos.

Funciona muito bem! Para projetos pequenos e equipes pequenas. No entanto ao estender o tempo de vida do projeto notamos que o overhead de manutenção interfere diretamente no andamento do desenvolvimento. Isso porque novas versões das dependências são lançadas, o número de dependências começam a aumentar.

Sem dúvida essa é uma das motivações para a Apache ter criado o Maven (http://maven.apache.org/).
Maven é muito mais que um gerenciador de dependências, é uma ferramenta de integração, controle de versão dos artefatos.
Ao utilizar o Maven, conseguimos isolar as bibliotecas utilizadas no projeto em um "repósitorio" compartilhado na internet, ao utilizar o repositório central do Maven, ou apenas com a sua equipe. Dessa forma não é necessário se preocupar com a disponibilidade das mesmas no repositório do código e muito menos com  duplicidade de dependências entre os módulos do projeto. E em relação a versão, que foi um dos problemas citados ao utilizar o Ant, ficam centralizadas em arquivos de configuração dos projetos de forma hierarquizada e explícita pelos módulos (POM).

Caso queiram saber mais a fundo sobre a história de como surgiu o Maven, no site da Apache é possível acompanhar toda a trajetória, History of Maven by Jason van Zyl.

Aguardem nossos próximos posts sobre Maven.
Até a próxima!
Luiz Fagner Zordan Analista de Sistemas

Graduado em Sistemas de Informação, atualmente trabalhando na Embraer pela FocusNetworks como FullStack. Sou apaixonado por tecnologia, fascinado por jogos e adoro passar o tempo assistindo séries.