Recursos especiais neste artigo:
Conteúdo sobre boas práticas.
Este artigo apresenta o Apache Archiva, uma ferramenta que funciona como um proxy para o repositório central do Apache Maven e de outros fornecedores. O Archiva facilita a gestão de repositórios e dependências ao centralizar a administração de repositórios e o versionamento de componentes.
Em que situação o tema é útil
Este tema é útil para
desenvolvedores e projetistas que desejam conhecer uma opção de como centralizar
a administração de repositórios e dependências utilizadas pelo Apache Maven. Neste
artigo será abordado como esta ferramenta, o Apache Archiva, pode facilitar a
gerência de dependências que o Maven solicita para a geração de artefatos.
Muitos desenvolvedores utilizam o Apache Maven para configurar um ambiente de desenvolvimento padronizado e gerenciar a construção (processo conhecido como build) de artefatos como Java ARchive (JAR), Web ARchive (WAR), Enterprise ARchive (EAR), entre outros.
Em linhas gerais, o Maven utiliza arquivos conhecidos por Project Object Model (POM) para obter informações sobre o projeto e detalhes de configurações que serão utilizadas durante o processo de construção.
Dependendo das configurações feitas no POM, o Maven pode necessitar de outras dependências para a realização do processo de construção. Quando necessário, ele consulta seu repositório padrão e outros repositórios que eventualmente estejam em suas configurações, assim viabilizando o processo de construção.
Apesar desta vantagem, esta prática pode ocasionar um descontrole nos repositórios utilizados para a construção, pois cada desenvolvedor pode configurar em seu sistema quais repositórios irá utilizar. Além disso, mesmo que todos os desenvolvedores optem pelos mesmos repositórios para encontrar dependências, a necessidade de adicionar ou atualizar um repositório deve ser garantida para toda equipe que adota o Maven. Isto demandaria a atualização do arquivo pom.xml e/ou settings.xml de todos os desenvolvedores. Talvez em grupos reduzidos de desenvolvedores esta atualização possa ser viável, mas em grandes departamentos de desenvolvimento pode se tornar complexo.
Nestas situações, talvez seja mais interessante centralizar a busca de dependências em um único local. Deste modo, para o Maven, existiria apenas um local para encontrar as dependências. Mas este local, por sua vez, poderia buscar por dependências em diversos repositórios para a construção dos artefatos.
Em outras palavras, para os desenvolvedores ficaria transparente onde suas dependências estão sendo resolvidas, pois para eles existiria apenas um local central, e este por sua vez realizaria as consultas em diversos outros repositórios.
Este é o papel do Apache Archiva, servir como um gerenciador central para administração de repositórios e dependências para a construção (builds) de artefatos de maneira organizada, separada por versões e num ambiente controlado.
Apesar de o Apache Archiva trabalhar em conjunto com o Maven, neste artigo não nos aprofundaremos no Maven, pois o intuito é conhecer como instalar e configurar o Archiva para ser acessado através do Tomcat.
Funcionamento do Apache Archiva
Para entender melhor os benefícios do Archiva, vamos primeiramente entender, em linhas gerais, como o Maven realiza o processo de construção de componentes. Na Figura 1 podemos visualizar as etapas até a construção do componente final (JAR / WAR / EAR).
Figura 1. Processo de construção de componentes no Maven.
Analisemos passo a passo as etapas descritas na Figura 1:
1. Empacotamento: O desenvolvedor invoca o Maven para montar e empacotar seu(s) projeto(s). O Maven, por sua vez, utilizará o(s) arquivo(s) POM para identificar as dependências necessárias para a compilação (compile) e empacotamento (package);
2. Repositório local: Por padrão, o Maven irá tentar recuperar as dependências em um repositório local, que geralmente está localizado na própria estação de trabalho do desenvolvedor;
3. Repositório Remoto: Quando o Maven não encontra a(s) dependência(s) necessária(s) localmente, então ele fará acesso(s) ao seu repositório remoto e copia as dependências para o repositório local;
4. Empacotamento: Com a(s) dependência(s) resolvida(s), o Maven poderá compilar e empacotar o(s) projeto(s).
Olhando para este modelo, poderíamos nos questionar:
· Como centralizar a administração dos repositórios remotos onde todos os desenvolvedores poderiam resolver suas dependências?
· Como criar um repositório corporativo na intranet onde fosse possível colocar as versões das dependências, evitando assim o tráfego remoto de rede?
· Como disponibilizar dependências criadas corporativamente para uso interno?
...
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.