Mais Poder ao Maven com Archiva
O Maven é uma excelente solução de gerência de configuração para Java, mas você não deve utiliza-lo sozinho, para tirar mais proveito do maven você irá precisar de uma solução de: hospedagem de dependências e proxy. Essa solução é o Archiva, neste post vou mostrar como instalar a solução e bem como a forma mais adequada de utiliza-lo.
Em um post anterior eu já tinha mostrado como instalar o Archiva, juntamente com um servidor de Build Continuo e Maven 2. Então se você quiser ver como instalar o Archiva sugiro que de uma olhada neste post.
Agora vamos ver a forma mais adequada de lidar com os repositórios e como que o Archiva e o Maven faz isso, vamos discutir a estrutura interna de repositórios do maven e bem como resolver pequenos problemas que você pode passar.
Resolução de Dependências com Maven
O maven resolve as dependências da seguinte forma. Primeiro ele procura no seu repositório local que fica no $USER_HOME/.m2 caso ele não ache a dependência ali ele iria para web procurar no repositório padrão. Você pode adicionar outros repositórios ao maven como o do java.net, jboss entre outros o problema é que se você tem 30 desenvolvedores e usa 40 jars você terá todos esses profissionais indo na internet baixar jars com frameworks e plugons.
A Solução pra isso é o uso do Archiva, logo a resolução de dependência fica dessa forma:
Uso correto do Archiva
Para um uso correto do Archiva você primeiro deve criar um repositório físico por exemplo para a JBoss, depois você cria o repositório da web para o Jboss. Agora você tem que ir no proxy conector e colocar o repositório físico da Jboss para o seu repositório da web. Agora você cria um grupo e adiciona o JBoss a esse grupo, agora para cada repositório que você criar faça isso, crie um repositório físico e um da web e adicione ao mesmo grupo.
Configurando acesso ao Archiva via Maven
Para os usuários do Archiva, você expõe somente esse grupo. Isso fica transparante se você adicionar um mirror no settings.xml do Maven. A baixo vou mostrar como configurar esse xml:
Dessa forma toda e qualquer execução de requisição de dependências do Maven vai vir para o Archiva. Se você tem um servidor de Build continuo essa configuração deve existir no seu servidor de build continuo também.
Um detalhe importante sobre repositórios é que se você configurar o Archiva do forma que estou falando, toda vez que você adicionar um novo repositório tem que se lembrar de ir na sessão de gerência de Usuários do Archiva e dar permissão de acesso ao novo repositório pra o usuário, no meu caso de exemplo o usuário se chama meu-usuario-archiva.
Resolvendo Pequenos Problemas com Maven
É Comum você passar por alguns problemas com maven, o pior é sempre migrar um sistema que é baseado em ant, ou as vezes amarrado a uma IDE proprietária, uma vez isso feito ou outros problemas são fáceis de se resolver.
As vezes ele dá erro em plugins e bibliotecas conhecidas, muitas vezes por que deu uma pequena instabilidade na rede ou deu algum problema na hora de baixar. AS vezes basta baixar de novo a biblioteca rodando um comando maven do tipo:
Isso força a ir na internet pegar novas versões das dependências. Isso não funcionando você pode remover a dependência do seu repositório local deletando a pasta do artifactID. Não funcionando você pode deletar a mesma dependência só que no Archiva. Isso não funcionando você pode tentar usar outra versão mais velha ou mais estável da biblioteca.
Se você gostou desse post, pode conferir outros posts sobre gerência de configuração ligadas a esse assunto:
Em um post anterior eu já tinha mostrado como instalar o Archiva, juntamente com um servidor de Build Continuo e Maven 2. Então se você quiser ver como instalar o Archiva sugiro que de uma olhada neste post.
Agora vamos ver a forma mais adequada de lidar com os repositórios e como que o Archiva e o Maven faz isso, vamos discutir a estrutura interna de repositórios do maven e bem como resolver pequenos problemas que você pode passar.
Resolução de Dependências com Maven
O maven resolve as dependências da seguinte forma. Primeiro ele procura no seu repositório local que fica no $USER_HOME/.m2 caso ele não ache a dependência ali ele iria para web procurar no repositório padrão. Você pode adicionar outros repositórios ao maven como o do java.net, jboss entre outros o problema é que se você tem 30 desenvolvedores e usa 40 jars você terá todos esses profissionais indo na internet baixar jars com frameworks e plugons.
A Solução pra isso é o uso do Archiva, logo a resolução de dependência fica dessa forma:
- Repositório Local
- Archiva
- Grupo(Proxy)
- Repositórios físicos do Archiva
- Repositórios web do Archiva
Uso correto do Archiva
Para um uso correto do Archiva você primeiro deve criar um repositório físico por exemplo para a JBoss, depois você cria o repositório da web para o Jboss. Agora você tem que ir no proxy conector e colocar o repositório físico da Jboss para o seu repositório da web. Agora você cria um grupo e adiciona o JBoss a esse grupo, agora para cada repositório que você criar faça isso, crie um repositório físico e um da web e adicione ao mesmo grupo.
Configurando acesso ao Archiva via Maven
Para os usuários do Archiva, você expõe somente esse grupo. Isso fica transparante se você adicionar um mirror no settings.xml do Maven. A baixo vou mostrar como configurar esse xml:
meu.id.do.archiva meu-usuario-archiva minha-senha meu.id.do.archiva http://localhost:8080/archiva/repository/meu-grupo-proxy-repositorio/ *
Dessa forma toda e qualquer execução de requisição de dependências do Maven vai vir para o Archiva. Se você tem um servidor de Build continuo essa configuração deve existir no seu servidor de build continuo também.
Um detalhe importante sobre repositórios é que se você configurar o Archiva do forma que estou falando, toda vez que você adicionar um novo repositório tem que se lembrar de ir na sessão de gerência de Usuários do Archiva e dar permissão de acesso ao novo repositório pra o usuário, no meu caso de exemplo o usuário se chama meu-usuario-archiva.
Resolvendo Pequenos Problemas com Maven
É Comum você passar por alguns problemas com maven, o pior é sempre migrar um sistema que é baseado em ant, ou as vezes amarrado a uma IDE proprietária, uma vez isso feito ou outros problemas são fáceis de se resolver.
As vezes ele dá erro em plugins e bibliotecas conhecidas, muitas vezes por que deu uma pequena instabilidade na rede ou deu algum problema na hora de baixar. AS vezes basta baixar de novo a biblioteca rodando um comando maven do tipo:
mvn clean install -U
Isso força a ir na internet pegar novas versões das dependências. Isso não funcionando você pode remover a dependência do seu repositório local deletando a pasta do artifactID. Não funcionando você pode deletar a mesma dependência só que no Archiva. Isso não funcionando você pode tentar usar outra versão mais velha ou mais estável da biblioteca.
Se você gostou desse post, pode conferir outros posts sobre gerência de configuração ligadas a esse assunto:
- 10 Motivos para Você Usar Maven
- Maven 2.0.8 + Archiva 1.0.1 + Tomcat 6.0.16
- Algumas Ferramentas que utilizo
- Como Avaliar uma Solução com o QSOS
- Customizando o Subversion parte 1
- Customizando Subversion parte 2
- Não esqueça das políticas