En días pasados, en el entorno de desarrollo Eclipse Helios Yo había desarrollado una aplicación web con distintas características como la incorporación de spring, hibernate, jsf2, etc. En general, quedó bien y decidí usarla como ejemplo (o plantilla base) para nuevos desarrollos.

El problema es que todo el setup inicial era bastante repetitivo, aburrido y hasta cierto sentido muy mecánico. En ese momento hubiera querido conocer cómo usar Maven para crear un “arquetipo”.

Los arquetipos en maven sirven para crear “plantillas” de proyectos existentes y después usar esas plantillas en proyectos nuevos con las correspondientes modificaciones para que éstos no sean una copia idéntica del primero.

La forma es la siguiente:

1) Abrir una consola de sistema. Colocarse en la raiz de donde se encuentra un proyecto (obviamente basado en Maven) y teclear:
mvn clean archetype:create-from-project

2) Después de 2 minutos, la consola nos informa que ha concluido y ahora tecleamos:
cd target\generated-sources\archetype\
(Esos directorios fueron creados como resultado del paso 1)

3) Ya posicionados en “archetype”, tecleamos:
mvn install
(Lo anterior crea una rama dentro del directorio ~/.m2/repository con nuestro nuevo arquetipo)

4) Finalmente, en cualquier parte del disco duro creamos un directorio vacío y desde la terminal de sistema (o consola) posicionados en él, tecleamos:
mvn archetype:generate

Lo anterior nos va a mostar una lista numerada de posibilidades que generalmente inician diciendo “remote”. A nosotros nos interesa el número de la que se indica como “local” y que es el que acabamos de crear. Lo seleccionamos y la interfaz textual de maven nos va a preguntar datos que harán que nuestro nuevo proyecto sea distinto al proyecto del que se generó el arquetipo. Por ejemplo:

Define value for property ‘groupId’: : mx.com.metasoft.pruebas
Define value for property ‘artifactId’: : pba001
Define value for property ‘version’: 1.0-SNAPSHOT: : [ENTER]
Define value for property ‘package’: metasoft: : mx.com.metasoft.pruebas.pba001

Lo anterior creará un nuevo proyecto (llamado metasoft-pba) cuyas clases estarán en el paquete mx.com.metasoft.example

Después de unos segundos, la estructura de nuestro nuevo proyecto estará creada y lista para ser imprtada desde el IDE de Eclipse sin ningún problema y lista par ser desplegada en nuestro servidor de aplicaciones.

Listo!

Saludos,
Goose

PD SE me olvidaba…. Para borrar un arquetipo que hayamos creado y que ya no queremos, hay que hacer dos cosas: 1) borrar su referencia en el archivo archtype-catalog.xml situado en el directorio .m2 y 2) borrar el directorio asociado al arquetipo dentro del directorio “repository” (que está dentro de .m2)

Como tardé un rato en encontrar cómo, exactamante, se usa el comando “find” de linux para buscar todos los archivos de un directorio (y sub directorios) que contngan una palabra específica, he decidido postearlo para que a quién le sirva, lo ocupe:

find . -name "*.java" -exec grep -i "public class AdminPicture" {} \; -print

Lo anterior encuentra, a partir del directorio actual, en él y sus hijos, todos los archivos con extensión .java que en su interior contienen la frase “public class AdminPicture”

OJO la -i sirve para indicar que NO sea case-sensitive. Si se omite, sera sensible.

Está bueno, no? (OJO ASEGURARSE DE QUE LAS COMILLAS SON LAS CORRECTAS Y NO LAS CURSIVAS)

Saludos,
Goose!

© 2017 Goose Workshop Suffusion theme by Sayontan Sinha