Otimizando Tempo de Setup de Projetos com Archetypes Maven

Chrystian Costa da Rosa
Bee Lab Academy
Published in
3 min readJan 20, 2020
Eduonix Blog

Recentemente tive uma experiência que me trouxe alguns insights com base nas minhas necessidades para iniciar um novo projeto de testes automatizados em minha nova empresa.

Quando cheguei aqui, me deparei com um nível de arquitetura que não estava acostumado, com bibliotecas internas auxiliares, projetos muito bem elaborados e coesos. Então, logo pensei, “Ok, tenho bastante a aprender!”.
Como meu estilo de aprendizagem é “Vai lá e faz”, não perdi tempo em pôr a mão no código, até aí tudo bem, mas como preciso criar um projeto novo para um produto novo, pensei, “Mano do céu, por onde eu começo?”, foi aí que tive uma ideia: poderíamos ter um projeto base para todo aquele que entrar na empresa, em nossa área, ter um norte para seguir.

Pensei em diversas maneiras como poderia ser feito e cheguei à conclusão que a melhor, mais viável e mais desafiadora, dentro da nossa realidade, seria criar archetypes Maven para cada solução necessária.

Bom, mas chega de blá blá blá e vamos ao que interessa.

Como criar um archetype Maven

Pré-requisitos

O Maven é escrito em Java (e usado principalmente para criar programas Java). Portanto, você precisa instalar o Java SDK e configurar as variáveis de ambiente JAVA_HOME e MAVEN_HOME.

Para acessar o tutorial clique aqui!

Passo 1

Crie um projeto Maven básico, porém com as dependências e arquivos necessários para criar futuros projetos.

O arquivo pom.xml precisa ter no mínimo esta estrutura:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.groupId</groupId>
<artifactId>my-archetype-id</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>3.1.1</version>
</extension>
</extensions>
</build>
</project>

Passo 2

Crie um arquivo de descrição do archetype.
O descritor é chamado de archetype-metadata.xml que deve estar localizado em src/main/resources/META-INF/maven/ .

Segue um exemplo de descritor de archetype:

<archetype-descriptor
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0
http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="archetype">
<fileSets>
<fileSet filtered="true" packaged="true">
<directory>src/main/java</directory>
</fileSet>
<fileSet>
<directory>src/test/java</directory>
</fileSet>
</fileSets>
</archetype-descriptor>

Passo 3

Acesse o projeto via terminal ou IDE e execute:

> mvn archetype:create-from-project

Passo 4

Recorte a pasta archetype gerada em:

{raiz do projeto}\target\generated-sources\

Após, cole onde preferir, mas de preferência em lugar de rápido acesso e com um nome que você possa facilmente identificar.

Passo 5

Na pasta archetype execute:

> mvn clean install

Obs.: Se preferir você pode ganhar tempo executando o seguinte comando:

> move target\generated-sources\archetype {path desejado} && cd {path desejado}\archetype && mvn clean install

Pronto!

Archetype criado e disponível no seu catálogo, agora já deve aparecer no catálogo da sua IDE, caso não apareça, será necessário adicionar GroupId, ArtifactId e Versão manualmente.

Note que dentro dessa pasta tem um arquivo pom.xml. Caso deseje customiza-lo, sinta-se à vontade. Se você precisar atualizar o archetype, basta digitar: mvn install archetype:update-local-catalog assim as alterações serão atualizadas localmente.

Bônus: Passo 6

Para criar um novo projeto à partir do archetype gerado, execute:

> mvn archetype:generate 
-DgroupId={groupID.do.novo.projeto}
-DartifactId={artifactId.do.novo.projeto}
-DarchetypeGroupId={groupID.do.archetype}
-DarchetypeArtifactId={artifactId.do.archetype}
-DinteractiveMode=false

Palavras Finais

Essa é uma das diversas maneiras práticas que você pode criar esqueletos de projetos para otimizar seu tempo, da sua equipe e daqueles que ainda vão ingressar.
Uma ótima dica é disponibilizar seus archetypes em um cloud bucket ou repositório que seja acessível por todos aqueles que necessitarem e ainda melhor, que todos possam contribuir no desenvolvimento de soluções que facilitem o trabalho e que seja adaptável à necessidade de cada um.

Espero que essa solução te ajude. Boa sorte e bom trabalho!

Peace!

Chrystian Costa da Rosa

--

--