Artigo Java Magazine 36 - Migrando para o Maven 2
Artigo Publicado pela Java Magazine 36.
Clique aqui para ler esse artigo em PDF.
Migrando para o Maven 2
Dicas práticas de migração do Maven 1 para o Maven 2
Saiba como aproveitar as novas características do Maven 2, migrando o seu projeto Maven 1 para esta versão.
Dário Oliveros e José Marcelo Santuci
Na edição anterior, no artigo “Maven 2 Essencial”, exploramos os principais conceitos e funcionalidades da nova versão do Apache Maven, destacando o novo gerenciamento de dependências, o surgimento de um ciclo de vida bem definido, repositórios hierárquicos e o download automático de plug-ins. Não foram abordadas, entretanto, as diferenças relacionadas à versão 1, que vão desde a simples incorporação de novas funcionalidades até mudanças estruturais, como por exemplo, a reestruturação do arquivo de projeto (POM), a nova hierarquia padrão de diretórios e o fim do suporte a Jelly.
Após uma análise inicial da versão 2, pode-se ter a impressão de que a migração é trabalhosa e custosa, principalmente quando há um grande número de projetos usando Maven 1. Mas isso pode ser contornado fazendo a migração de forma gradual, e seguindo algumas dicas apresentadas neste artigo, que objetivam atenuar possíveis problemas e reduzir o esforço de migração.
Convidamos o leitor a conhecer as motivações que levam a esta migração e também estratégias de como migrar, passo a passo e através de um exemplo prático, projetos Maven 1 para Maven 2, de modo que ambas as versões possam conviver durante o período de transição. A estratégia adotada neste artigo foi baseada em uma das palestras ocorridas no JavaZone 2005 e conferida por um dos membros do Maven 2. Adotamos tal estratégia em alguns projetos internos, incorporando a ela pontos não tratados e detalhes e dicas observados por nós na prática.
Além de mostrar os detalhes da migração, este artigo permite que se conheça mais sobre o uso do Maven em projetos Java EE e demonstra os principais recursos da ferramenta sendo aplicados na prática.
Por que migrar para o Maven 2?
A migração para o Maven 2 pode ser encarada como uma tendência natural, pois é nesta nova versão que estão sendo concentrados os esforços atualmente. Isto não significa, porém, que o suporte às primeiras versões deixará de existir. Pelo contrário, a linha 1.x continuará sendo mantida para aqueles que optarem pela não migração, embora não haja previsões para se incorporar a ela novas funcionalidades significativas.
As vantagens do Maven 2 são muitas e são um convite quase irresistível para que o processo de migração ocorra. Veja algumas:
·Menor e mais rápido – com apenas 1MB, o Maven 2 possui poucas dependências e pode ser incorporado a outras ferramentas
·Ciclo de vida de build bem definido
·Suporte a dependências transitivas
·Estrutura hierárquica de repositório e definição de um padrão para a estrutura de diretórios
·Transparência no tratamento de multiprojetos
·Download automático de plug-ins
·Melhoria no tratamento de Snapshots
·Rápida criação de novos projetos com o uso de archetypes
·Extensibilidade melhorada via plug-ins em Java e independência da linguagem Jelly para construção de plug-ins e/ou customização de builds
·Simplificação da configuração com o fim de arquivos de propriedades (project.properties e build.properties)
É importante ressaltar que a decisão por migrar vai depender das características de cada projeto. Para projetos que possuem muita customização via o arquivo maven.xml (não mais usado no Maven 2), ou que utilizam uma grande variedade de plug-ins, é preciso antes analisar a real necessidade da migração e o esforço para adaptar o projeto ao Maven 2. Deve-se também verificar se todos os plug-ins usados já foram devidamente migrados para a nova versão.
Para obter mais informações sobre os plug-ins disponíveis, visite docs.codehaus.org/display/MAVEN/Maven+Plugin+Matrix. Esta página apresenta uma matriz comparando a disponibilidade em ambas as versões do Maven, o estágio atual e a existência de documentação.
Projeto-exemplo
Vamos ilustrar o processo de migração através de um exemplo prático. Usaremos neste artigo um projeto Java EE construído sob a versão 1 do Maven, que contém diferentes tipos de artefatos (jar, ejb-jar, war e ear), sendo cada um deles representado e gerado por um subprojeto.
Além disso, o projeto pressupõe o uso da ferramenta XDoclet para geração de interfaces e descritores, e a utilização do servidor de aplicações JBoss (ambas são ferramentas muito usadas em projetos Java EE e tornam os exemplos mais concretos). Veja a estrutura do projeto na Figura 1. O código-fonte do projeto-exemplo, antes e depois da migração, está disponível para download no site da Java Magazine.
Figura 1. Estrutura do projeto-exemplo
A relação de dependência entre os subprojetos é ilustrada na Figura 2. O projeto principal, projeto-exemplo, mantém as configurações básicas e aplicáveis a todos os subprojetos.
Figura 2. Relação entre os subprojetos
A migração passo a passo
Uma questão que pode surgir antes de iniciar a migração é se existe a possibilidade de migrar um projeto mantendo a coexistência com o original. A resposta é sim: como os nomes de arquivos de configuração do Maven 2 e do executável diferem da versão 1, é possível estabelecer builds em paralelo, mantendo as configurações originais de ambos os projetos.
Veja algumas das diferenças entre as duas versões na Tabela 1. Apresentaremos a seguir os passos para a migração do projeto de exemplo, do Maven 1 para o Maven 2.
|
|
Maven 1 |
Maven 2 | ||
Executável |
Maven |
mvn | ||
|
Configuração de build |
project.xml |
Definição do POM |
pom.xml |
Definição do POM |
|
maven.xml |
Customização de build | |||
|
project.properties |
Configuração geral de build |
settings.xml |
Configuração local | |
|
build.properties |
Configuração local de build |
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo