Olá pessoal!
Assim como anunciado anteriormente hoje é dia de repositório, hoje é dia de MAVEN!
Então preparem-se, se ajeita na cadeira, puxa a pipoca que o post irá começar!
Você percebe em seu ambiente de trabalho/desenvolvimento que existem desperdícios?
Não desperdício água,luz... e sim TEMPO, PROCESSO.
Pensem no seguinte, sempre que você dá o start no desenvolvimento de um projeto novo você precisa:
- Configurar o ambiente em uma máquina
- Modificar as versões de bibliotecas utilizadas
- Gerar sempre novas versões
- Transferir o conhecimento para a equipe sobre todos os passos anteriores
O Maven surge como um gerenciador de configurações, um repositório!
E ele pode:
- Gerenciar dependências
- Compilar o código fonte
- Compilar e executar os códigos de testes
- Empacotar projetos
- Facilitar a escrita de arquivos de build usando conceitos de convenção sobre configuração
- Realizar a gestão de dependências de projeto
- Versionar diferentes SCM's
- Auxiliar em todo o ciclo de construção do projeto
- Deployar em diferentes servidores
- Gerar documentação (wiki)
- Verificar a qualidade do código
etc... etc... etc...
Bom, passando por esse overview rápido e ligeiro vamos aprofundar o assunto!
O que seria o Maven?
Maven seria um repositório é um diretório local, onde todos os jars do projeto, jar biblioteca, plugins ou quaisquer outros artefatos específicos do projeto são armazenados e podem ser usados pelo Maven facilmente.
Maven possui três tipos de repositórios:
- Local
- Central
- Remoto
Ele contém todas as dependências da biblioteca (artefatos, plugins, etc) do seu projeto.
O repositório remoto referem-se a qualquer outro tipo de repositório, acessado por uma variedade de protocolos como o file :/ / e http:// .
Estes repositórios pode ser um repositório remoto verdadeiramente criado por um terceiro para fornecer os seus artefatos para download
por exemplo, repo.maven.apache.org e uk.maven.org repositório central do Maven).
O repositório central são inventários oficiais distribuídos geograficamente.
Onde o usuário pode optar em espelhar qualquer repositório distribuído apenas alterando seu settings.xml.
Estruturalmente os repositórios locais e remotos compartilham da mesma arquitetura, de mesma forma que os scripts podem ser facilmente executado em ambos os lados, ou eles podem ser sincronizados para fora de linha utilizada.
Vantagens:
→ Simplicidade: No Maven um único comando do Maven, baixa as dependências necessárias, roda os testes, configura o ambiente, baixa o servidor de aplicação, faz deploy do sistema e abre o browser com a tela de login do sistema.
→ Automatização: O nível de automatização muito alto e com pouquíssima configuração. Refletindo no processo de release de uma versão de projeto, deixando o processo muito mais simples.
→ Qualidade: Sempre que o usuário executa build project ou gera um deploy em um servidor, o maven se encarrega de rodar todos os testes unitários.
Caso algum teste unitário falhe, ele aborta o build/deploy. Tornando-se uma excelente política para forçar os testes e a qualidade de software.
→ Build: Sempre que o Maven realiza um build de sua solução, ele utiliza muito o conceito de convenção sobre configuração. Ocasionando o ganho de tempo, ganho de performance, maior produtividade e conseqüentemente menos erros de configurações.
→ Contexto e Informações: É possível ter de forma contextualiza as informações úteis do projeto. O Maven pode gerar um site contendo diversas informações como: (Lista de Desenvolvedores, Links para o controle de versão, Links para o sistema de build continuo, Links para o sistema de issue tracking, Lista de discussão, Dependências do projeto, Resultado da execução dos testes, Javadoc e documentação)
O recurso pode ser customizado e parametrizado. Todas as informações podem ser coletadas e condensadas no site de forma automática no maven.
Desvantagens:
- Grande curva de aprendizado
- Maior complexidade na configuração do ambiente
Vamos dar uma olhada na arquitetura
Visão geral Maven
Visão do repositório Maven
Ciclo de Vida
1. process-resources (processar recursos)
2. compile (compilar)
3. process-test-resources (processar recursos de teste)
4. test-compile (testar compilação)
5. test (testar)
6. package (empacotar)
7. install (instalar)
8. deploy (implantar)
Bom pessoal, espero que tenham gostado!
Até a próxima galera!
o/
0 comments:
Postar um comentário