BT

Maven 3.0 Lançado

por Alex Blewitt , traduzido por Rafael Marques em 15 Out 2010 |

Sonatype anunciou semana passada o lançamento do Maven 3 (release notes), a maior mudança desde que o Maven 2 foi lançado em 2005. Diferente da mudança entre o Maven 1 e o Maven 2, que teve mudanças no POM e causou um impacto significante à comunidade Maven, o lançamento do Maven 3 está marcado por uma automação de testes significantes, utilizando projetos open source tentando evitar incompatibilidades com versões anteriores. Como resultado, o Maven 3 poderá substituir o Maven 2 sem grandes problemas, com pequenas diferenças notáveis como a melhoria em performance. Qualquer problema conhecido foi listado na lista de compatibilidade.

A nova versão do Maven 3 é construída em cima do Google Guice, um framework leve de injeção de dependência, no lugar do Plexus que foi utilizado anteriormente. Esta refatoração permite que outros containers sejam utilizados no futuro, como o Pico Container. A camada de abstração é fornecida pelo  Sisu, o que torna o Maven compatível com o Spring.

Os relatórios do Maven foram mudandos; a seção dedicada reporting é encontrada agora em uma configuração por relatório (similar a plugins). Para POMs já existentes, haverá uma tradução automática, porém conforme o Maven 3 ficar mais popular, o uso isolado da tag reporting tende a desaparecer. O processamento dos relatórios (e geração de site) teve que ser renovada para o Maven 3 e, em versões beta anteriores, havia algumas limitações em o que a geração de site irá publicar; veja as notas de lançamento para maiores detalhes. 

Maven Shell

O Maven 3 introduz o conceito de Maven Shell, um processo standalone Java que é parte do build do Maven, parte build server. O Maven Shell irá carregar e parsear todos os POMs necessários do projeto, e mantê-los em memória  para builds mais rápidos posteriomente. No futuro, builds mais rápidos para quem realiza builds constantes do mesmo código. O código fonte está disponível no GitHub, caso você queira olhar como está o código; também está disponível um FAQ. O Maven Shell será o substituto do velho  maven-cli-plugin, e no futuro haverá suporte para o Hudson, Nexus, JIRA e Confluence.

Tycho e M2Eclipse

Assim como teve melhorias no runtime, o Maven 3 também permite outras extensões que não eram possíveis no Maven 2. Tycho é um build plugin que permite ao Maven realizar build de plugins para o Eclipse, Eclipse features, Eclipse (p2) update sites e aplicações Eclipse RCP. Além disso, ele também pode utilizar outros sites para aquelas bibliotecas que não estão disponíveis nos formatos padrões de repositórios Maven. Diversos projetos Eclipse agora utilizam o Tycho ao invés do Eclipse PDE/Ant build, como dito "Provavelmente a parte mais difícil em utilizar o Maven e o Tycho para construir o meu projeto de Eclipse foi perceber como ficou fácil" - qualquer um que criou um build de Eclipse no passado sabe o quão frágil isso pode ser. Atualmente, o Tycho está hospedado pela Sonatype, mas será movido para o projeto Tycho no Eclipse.org no futuro.

O plugin que gerencia os builds do Maven dentro do Eclipse, o M2Eclipse, foi atualizado para a utilização do Maven 3.0 com o Guice, bem como o Aether. Isso provê uma maneira simples de realizar o build e gerenciar projetos utilizado o Maven. Se você utilizou o Maven no passado, então uma coisa para se tomar cuidado é a diferença entre a instância do Maven apontado pelo M2_HOME e Eclipse, já que o M2Eclipse irá instalar a sua própria cópia do Maven. Atualmente, o M2Eclipse está hospedado pela Sonatype, mas ele está de mudança para o projeto M2E no Eclipse.org.

O Futuro

O Maven 3 abre um leque de possibilidades para o futuro. O formato do POM foi desacoplado com as estruturas internas, o que significa a possibilidade de utilizar outros formatos além do XML. Apesar de não ter sido liberado como parte do Maven 3, experimentos com o Polyglot Maven mostram que este é um caminho a ser seguido no futuro.

Uma outra vantagem nesta separação é a possibilidade de dividir os POMs em mais de um arquivo. Isso permite "POM Mixins", uma característica que não estará disponível imediatamente no Maven 3, porém já foi parcialmente desenvolvida. Uma divisão no POM permitirá agrupar plugins e reports a serem definidos - algo parecido com um parent POM. Empresas e organizações open-source que desejam alcançar uma uniformidade entre os seus projetos estarão aptos a utilizar a divisão de POM's para configurar builds padrões sem precisar organizá-los hierarquicamente.

Finalmente, as versões Maven 3.x terão em vista o OSGi depois da versão 3.0. Isto será possível utilizando o Peaberry. Um dos grandes desafios aqui será a migração para utilizar schemes de versionamento OSGi. Migrar para o ambiente OSGi não será aparentemente um processo muito difícil; porém, pequenas diferenças entre como o Maven e o OSGi tratam versões provavelmente será mais problemático.

Foi feito muito esforço pela Sonatype entre outros para fazer com o que o lançamento do Maven 3 seja um sucesso. Você pode realizar o download agora a partir do site maven.apache.org.

 

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT