Bueno, básicamente un archetype es un Template (molde) de Maven, una herramienta que explicare con mas detalle en otro post.
Para Crear un template propio, un molde que genere todo lo que queramos apara hacer el típico "New Project" , y que sea como queramos , hacemos lo siguiente (Todo esto teniendo Maven2 ya instalado)
creamos una carpeta raíz donde nos guste .
$ cd carpeta
"D" es para indicar parámetro "groupId" DgroupId=nombre de la empresa, grupo , etc. "artifactId" DartifactId=nombre del archetype (nombre del template). "archetypeArtifactId" DarchetypeArtifactId= nombre del template en el que nos basamos
esto nos va a crear una estructura de directorios que también estará en la explicación de maven. =)
en src estan los fuentes del template (archetype en adelante) desp de compilar estara la carpeta target main/resources tenemos: archetype-resources (aca van los templates) META-INF (aca va el listado de archivos a utilizar)
nos va a crear como debe ser el pom (xml de configuración de maven) , un "hola mundo" y un test de "hola mundo"
hay un bug que para arreglarlo se debe reemplazar en los "holas mundos " (App.java y AppTest.java el :
package $"el groupId que pusimos"; --->por---> package $package;
luego en el pom.xml
$"el groupId que pusimos" $"el artifactId que pusimos" $1.0-SNAPSHOT
por
$groupId $artifactId $version
Luego, Editamos/Agregamos los .java que queramos , o el POM y cuando creemos una aplicación con nuestro archetype utilizara este template. Para Agregar hay que editar el archivo META-INF\maven\archetype.xml
y agregarle el source que queramos por ej:
src/main/java/App2.java
luego
$ mvn install
Con esto lo tenemos instalado en nuestro repositorio local, y ya podemos usarlo.
Ahora, para usarlo sin las comillas (")
mvn archetype:create -DarchetypeGroupId="el groupId que pusimos al template" -DarchetypeArtifactId="el artifactId que pusimos al template" -DarchetypeVersion=1.0-SNAPSHOT -DgroupId="group id de este proyecto" -DartifactId="artifact id de este proyecto"