Técnico

Entendendo Archetypes do Maven

Maven Archetypes



Quando começamos um novo projeto, sempre criamos configurações básicas que seguem basicamente o mesmo padrão em todos os aplicativos, tais como arquivos xml de configuração de log, arquivos de configuração de acesso a banco de dados, classes de suítes de testes, etc. Ao analisarmos a estrutura de um projeto novo padrão, percebemos que o trabalho de configuração é basicamente o mesmo e que muitos dos arquivos são copiados e colados na nova aplicação.
Percebendo uma oportunidade de generalização nessa parte, o Maven disponibiliza os chamados arqchetypes.
Archetypes são basicamente templates de projetos pré-definidos, com alguns arquivos e uma estrutura inicial já definida. Veremos no post com utilizar tais archetypes, e como criar os seus próprios.

Utilizando Archetypes



Já vimos anteriormente como utilizar o Maven para criar novos projetos:





Após executar o comanda, você verá uma saída parecida com esta:





Repare que existem uma infinidade de opções de archetypes. Todas essas opções ficam descritas em um arquivo de configurações presente no repositório ao qual seu maven aponta. No meu caso utilizo o repositório padrão do Maven, mais um do JBoss e o local. Na redspark ainda existe o repositório da empresa, aonde os archetypes criados internamente são disponibilizados.
O número que o maven sugere é o projeto padrão Java, sem nenhuma outra integração. Selecione este projeto e prossiga com a criação, escolhendo o número sugerido para a versão do plugin (no meu caso 6). Dê um nome ao grupo ao qual o projeto irá pertencer: group.teste, neste exemplo, dê também um nome para o artefato: teste, escolha a versão e dê um nome ao pacote.





Neste projeto já será criado uma pasta para as classes, com o pacote que foi descrito: group.teste, e outra pasta para os testes, também com o pacote descrito. Dentro destas pastas já será criado uma classe App.java e um outra AppTest.java para os testes. Também será criado o pom da aplicação, já com a dependência do JUnit 3.8.1.
Fácil criar um pojeto padrão do zero. Tente criar projetos com os outros archetypes, como por exemplo o projeto Java Web ou até mesmo um projeto com o archetype do FlexMojos que está disponível no repositório do próprio FlexMojos.

Criando seu próprio Archetype



Ainda que existam esses templates de projetos básicos, cada empresa possui algumas configurações próprias e utilizam alguns frameworks internos em todos os projetos. Sabendo disso, o Maven disponibiliza maneiras de criar seu próprio archetype.
Uma dessas maneiras é utilizar o próprio Maven para criar um projeto utilizando o archetype de projetos de archetype. Confuso? Mas é bem tranquilo. Nada mais é do que um projeto Maven que contém a descrição do template de criação do projeto que será criado utilizando esse archetype próprio.
Este projeto consiste de um pom com as dependências para o plugin de archetypes, um arquivo de configuração para o plugin contendo informações de arquivos e pastas que serão adicionados ao template e os arquivos propriamente ditos. O arquivo de configuração do plugin encontra-se em src/main/resources/META-INF/maven/archetype-metadata.xml. Sua estrutura é bem simples e de fácil leitura, contendo nomes das pastas que serão criadas com seus respectivos tipos, e uma lista com adições e exclusões de arquivos na pasta. Os arquivos utilizados no archetype ficam em src/main/resources/archetype-resources/.
Fato importante é que archetypes do Maven se comportam como qualquer outro projeto Maven, possuindo versão, grupo, nome e está disponível no repositório. É importante notar isso, pois a versão do archetype que está sendo utilizado pode alterar completamente o tipo de projeto que está sendo criado, mudando versões de dependências ou até mesmo organização das pastas.

Utilizando um Projeto já Existente



Uma segunda maneira de criar um archetype, é utilizar um projeto já existente. Pode não ser muito recomendável para projetos que já estejam muito avançados, mas para projetos recém criados se aplica perfeitamente.
A idéia é simples, basta criar um projeto básico com as configurações e a organização necessária, e utilizar o plugin de archetypes para criar o archetype:





O comando mvn archetype:create-from-project irá criar um projeto de archetype com o metadata descrevendo todos os arquivos existentes no projeto utilizado como parte do template em suas respectivas pastas. O projeto inteiro será adicionado aos resources do archetype e portanto podem ser modificados posteriormente.
Essa é a maneira mais fácil e rapida de se criar um archetype, mas devem ser tomados alguns cuidados. Por exemplo, as pastas do projeto de origem são mantidas no projeto que será criado usando o archetype, portanto será ignorado o pacote definido na criação. Pastas ou pacotes vazios no projeto de origem também serão ignorados e não farã parte do projeto criado utilizando o archetype.
Precauções a parte, venho utilizando archetypes do Maven praticamente em toda minha carreira com a ferramenta, e posso afirmar que nesses anos os archetypes me salvaram muito tempo e muita pesquisa no google. Recomendo o test drive com o plugin, mas já adianto que ainda existem alguns bugs e o archetype talvez não ficará perfeito com os padrões que você esteja esperando, mas ainda assim cerca de 90% do novo projeto estará configurado com apenas uma linha de comando.

Por @Gust4v0_H4xx0r

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Compartilhe isso: