Crear un Arquetipo de Maven

Un Arquetipo de Maven es un conjunto de herramientas de plantillas de proyectos de Maven que permite a los desarrolladores crear un proyecto Java rápidamente y de forma consistente. Los arquetipos ayudan a estandarizar la creación de proyectos dentro de una organización.

Crear un arquetipo de Maven nos permite disponer de una plantilla de proyectos que facilita a los usuarios la generación de proyectos del mismo tipo de forma automática y sin tener que configurarlos manualmente. Los arquetipos de Maven son una excelente manera de crear y poner en marcha su proyecto rápidamente, ya que proporcionan una estructura básica que se puede personalizar para satisfacer sus necesidades.

Al crear un nuevo proyecto, puede hacerlo seleccionando un Arquetipo Maven de una lista de arquetipos disponibles por defecto. Estos arquetipos cubren una amplia gama de tipos de proyectos, desde aplicaciones web hasta bases de datos y más. El arquetipo seleccionado luego crea los archivos necesarios y la estructura de carpetas para el proyecto.

Una vez que se crea el proyecto, los desarrolladores pueden usar los comandos de Maven para construir y ejecutar su proyecto. También pueden personalizar el proyecto según sea necesario, agregando más dependencias Maven o personalizando el código.

Ventajas de utilizar Arquetipos de Maven

  • Permite crear un proyecto desde una estructura predeterminada sin tener que configurar cada parte manualmente.
  • Los arquetipos permiten crear un proyecto con una estructura coherente, de modo que todos los proyectos compartan las mismas características.
  • Ayuda a reducir la redundancia y ahorra tiempo al no tener que configurar manualmente cada proyecto.
  • Ofrece una solución sencilla para compartir proyectos entre desarrolladores.
  • Los arquetipos de Maven son fáciles de personalizar para adaptarlos a nuestras necesidades.

Cómo crear un arquetipo de Maven

Para crear un arquetipo de Maven, primero se debe crear un proyecto con la estructura y los archivos deseados. Esto se puede hacer manualmente o puede usar un Arquetipo existente para crear rápidamente un proyecto con la estructura deseada. Una vez que se crea el proyecto, puede usar el plugin Maven Archetype para generar el archivo descriptor del Arquetipo (archetype-metadata.xml), que define la estructura y los archivos del arquetipo. Finalmente, el archivo descriptor de arquetipo generado se puede empaquetar e implementar en un repositorio de Maven, lo que permite que los usuarios puedan accederlo para crear fácilmente proyectos a partir del arquetipo.

1. Crear un nuevo proyecto

Para generar el proyecto podemos utilizar el comando mvn archetype:generate con alguno de los arquetipos provistos por defecto para luego personalizar el proyecto de acuerdo a nuestras necesidades.

Sin embargo, para este ejemplo utilizaremos el proyecto Spring Boot explicado en este artículo:

Este proyecto consiste en una Rest API que incluye la configuración para la generación automática de documentación mediante Swagger.

2. Generar el Arquetipo a partir del proyecto

Una vez que tenemos generado el proyecto con la configuración completa y la funcionalidad básica generaremos el arquetipo. Para esto abrimos una terminal de comandos ,nos ubicamos en la carpeta raíz del proyecto (/customer-service-swagger) y ejecutamos el siguiente comando:

mvn archetype:create-from-project

Los archivos y carpetas del arquetipo se habrán generado en la carpeta /customer-service-swagger/target/generated-sources/archetype, como se muestra en el siguiente listado (se omitieron los archivos que no consideramos relevantes para el ejemplo):

customer-service-swagger
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── jcodepoint
│   │   │           └── customerserviceswagger
│   │   │               ├── CustomerController.java
│   │   │               ├── Customer.java
│   │   │               ├── CustomerServiceSwaggerApplication.java
│   │   │               └── SwaggerConfig.java
│   │   ├── resources
│   │   │   ├── application.properties
│   │   │   ├── static
│   │   │   └── templates
│   │   └── webapp
│   │       └── WEB-INF
│   │           └── jboss-web.xml
│   └── test
│       └── java
│           └── com
│               └── jcodepoint
│                   └── customerserviceswagger
│                       └── CustomerServiceSwaggerApplicationTests.java
└── target
    └── generated-sources
        └── archetype
            ├── pom.xml
            ├── src
            │   ├── main
            │   │   └── resources
            │   │       ├── archetype-resources
            │   │       │   ├── pom.xml
            │   │       │   └── src
            │   │       │       ├── main
            │   │       │       │   ├── java
            │   │       │       │   │   ├── CustomerController.java
            │   │       │       │   │   ├── Customer.java
            │   │       │       │   │   ├── CustomerServiceSwaggerApplication.java
            │   │       │       │   │   └── SwaggerConfig.java
            │   │       │       │   ├── resources
            │   │       │       │   │   └── application.properties
            │   │       │       │   └── webapp
            │   │       │       │       └── WEB-INF
            │   │       │       │           └── jboss-web.xml
            │   │       │       └── test
            │   │       │           └── java
            │   │       │               └── CustomerServiceSwaggerApplicationTests.java
            │   │       └── META-INF
            │   │           └── maven
            │   │               └── archetype-metadata.xml
            │   └── test
            │       └── resources
            │           └── projects
            │               └── basic
            │                   ├── archetype.properties
            │                   └── goal.txt
            └── target
                └── customer-service-swagger-archetype-0.0.1-SNAPSHOT.jar

3. Instalar el Arquetipo en el repositorio de Maven

Para probar nuestro arquetipo debemos, en primer lugar, instalar la librería generada en el repositorio local de Maven. Para esto, desde una terminal de comandos, nos posicionamos en la carpeta /customer-service-swagger/target/generated-sources/archetype/target, y ejecutamos el siguiente comando:

mvn install:install-file
	-Dfile=customer-service-swagger-archetype-0.0.1-SNAPSHOT.jar
	-DgroupId=com.jcodepoint
	-DartifactId=customer-service-swagger-archetype
	-Dversion=1.0
	-Dpackaging=jar

4. Generar el catálogo

El Catálogo de Arquetipos de Maven es un archivo XML (archetype-catalog.xml) que contiene información sobre Arquetipos. Este archivo se utiliza para generar proyectos a partir de un arquetipo. El catálogo suele estar en el repositorio local de Maven y contiene información sobre el nombre, la versión y la descripción del arquetipo, así como los archivos que contiene. Maven usa el catálogo para encontrar arquetipos disponibles, y el archivo de catálogo se puede usar para agregar arquetipos externos al repositorio local.

Para generar el catálogo ejecutar el siguiente comando:

mvn install archetype:update-local-catalog

El archivo generado es el que se muestra a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.jcodepoint</groupId>
      <artifactId>customer-service-swagger-archetype</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <description>Demo project for Spring Boot</description>
    </archetype>
  </archetypes>
</archetype-catalog>

5. Testear el arquetipo

Ya estamos en condiciones de generar un nuevo proyecto a partir del arquetipo creado. Para hacer esto, desde una terminal de comandos nos posicionamos en una carpeta vacía y ejecutamos el siguiente comando:

mvn archetype:generate 
   -DarchetypeGroupId=com.jcodepoint
   -DarchetypeArtifactId=customer-service-swagger-archetype
   -DarchetypeVersion=1.0

Por defecto el comando se ejecutará en modo interactivo, por lo que nos pedirá que ingresemos los siguientes datos:

  • groupId
  • artifactId
  • version
  • package

Conclusión

Crear un Arquetipo de Maven a partir de un proyecto existente es un proceso simple y se puede realizar en solo unos pocos pasos. Al crear un arquetipo, puede generar rápida y fácilmente proyectos con una estructura consistente, lo que facilita compartir y colaborar en los proyectos. Además, Los arquetipos de Maven son una excelente manera de comenzar rápidamente un nuevo proyecto y de asegurarse de que esté configurado correctamente.

Referencias


Te puede interesar

Agregar dependencias en Apache Maven

En este artículo veremos cómo agregar dependencias en Apache Maven en unos pocos pasos, buscando en el Repositorio Central de Maven.

Seguir leyendo →

Maven – Pruebas Unitarias

En este artículo explicamos cómo configurar y ejecutar pruebas unitarias con JUnit utilizando Maven.

Seguir leyendo →

Palabras reservadas en Java

Las palabras reservadas en Java son un componente crucial de la sintaxis del lenguaje para formar los bloques básicos del lenguaje.

Seguir leyendo →