Back-End

27 mai, 2010

Mais poder ao Maven com Archiva

Publicidade

O Maven é uma excelente solução de gerência de configuração para
Java, mas você não deve utilizá-lo sozinho. Para tirar mais proveito da ferramenta, você irá precisar de uma solução de hospedagem de dependências e
proxy. Essa solução é o Archiva. Veremos aqui como instalar a solução e a forma mais
adequada de utilizá-la.

Veremos a forma mais adequada de
lidar com os repositórios e como que o Archiva e o Maven fazem isso. Vamos
discutir a estrutura interna de repositórios do Maven e também como
resolver pequenos problemas pelos quais 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 parte para procurar na web no repositório padrão. Você pode adicionar outros repositórios
ao Maven, como o do java.net e 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 plugins.

A solução pra isso é o uso do Archiva, logo a resolução de dependência
fica desta forma:

  • Repositório Local
  • Archiva
  • Grupo(Proxy)
  • Repositórios
    físicos do Archiva
  • Repositórios web do Archiva

Você
poderia configurar todos os repositórios do Maven que utilizam para
um único repositório físico do Maven, mas não recomendo que faça isso, pois pode ser que um repositório saia do ar, e isso fará com que o Maven fique lento ao resolver dependências ou ao fazer um download, por
ter corrompido algum POM ou metadado do Maven, ou até mesmo um jar.

Uso correto do Archiva

Para um
uso correto do Archiva, você primeiro deve criar um repositório físico,
por exemplo, para a JBoss, e depois criar 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. Então, crie um grupo e
adicione o JBoss a esse grupo. Para cada repositório que você
criar, será preciso fazer isso, criar um repositório físico e um da web e adicioná-lo ao 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.
Abaixo vou mostrar como configurar esse xml:

<span>
</span><settings>
<proxies>
</proxies>
<servers>
<server>
<id>meu.id.do.archiva</id>
<username>meu-usuario-archiva</username>
<password>minha-senha</password>
</server>
</servers>
<mirrors>
<mirror>
<id>meu.id.do.archiva</id>
<url>http://localhost:8080/archiva/repository/meu-grupo-proxy-repositorio/</url>
<mirrorof>*</mirrorof>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>
dot.gif

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 contínuo, essa configuração
deve existir lá também.

Um detalhe
importante sobre repositórios é que se você configurar o Archiva da
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 para 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 às vezes amarrado a uma IDE
proprietária. Uma vez feito isso, os outros problemas são relativamente fáceis de se
resolver.

Às vezes ele dá erro em plugins e bibliotecas
conhecidas, muitas vezes porque houve uma pequena instabilidade na rede
ou algum problema na hora de baixar. Na maioria dos casos, 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. Se isso não está funcionando,
você pode remover a dependência do seu repositório local, deletando a
pasta do artifactID. Se ainda assim não funcionar, você pode deletar a mesma
dependência, só que no Archiva, ou, ainda, tentar
usar outra versão mais velha ou mais estável da biblioteca.

Se
você gostou deste artigo, confira outros sobre gerência de
configuração ligadas a esse assunto:

Abraços e até a próxima.