webapp tutorial mvn generate example archetype java maven-2 maven-plugin maven-archetype

java - tutorial - ¿Cuáles son las URL de todos los catálogos de Maven Archetype que conoces?



maven-archetype-webapp (5)

Los Arquetipos Maven son las "plantillas" mediante las cuales puede generar rápidamente un ejemplo en ejecución de un determinado marco o tipo de proyecto. Estoy tratando de compilar una lista de todos los catálogos de arquetipos Maven actualmente activos en la red.

De la documentación de Maven sobre los archivos de catálogo :

El conocimiento sobre arquetipos se almacena en catálogos.

Los catálogos son archivos xml.

El Archetype Plugin viene incluido con un catálogo interno. Este se usa por defecto.

El Archetype Plugin puede usar catálogos del sistema de archivos local y de las conexiones HTTP.

Hasta ahora, he recopilado esta lista de repositorios que publican catálogos, pero me encantaría ver si alguien sabe más:

mvn archetype:generate -DarchetypeCatalog=local -DarchetypeCatalog=remote -DarchetypeCatalog=http://repo.fusesource.com/maven2 -DarchetypeCatalog=http://cocoon.apache.org -DarchetypeCatalog=http://download.java.net/maven/2 -DarchetypeCatalog=http://myfaces.apache.org -DarchetypeCatalog=http://tapestry.formos.com/maven-repository -DarchetypeCatalog=http://scala-tools.org -DarchetypeCatalog=http://www.terracotta.org/download/reflector/maven2/

Enlaces a lo mismo: 1) FuseSource 2) Cocoon 3) Java.net 4) MyFaces 5) Tapestry 6) Catálogo de Scala 7) Catálogo de terracota

Notarás que si el repositorio realmente publica un catálogo de arquetipos (todo lo anterior), obtendrás un prompt de UI de todas las opciones encontradas en ese archetype-catalog.xml . Por ejemplo:

mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: http://scala-tools.org -> scala-archetype-simple (A simple scala project) 2: http://scala-tools.org -> lift-archetype-blank (A blank/empty liftweb project) 3: http://scala-tools.org -> lift-archetype-basic (A basic liftweb project (with DB, css, ...)) Choose a number: (1/2/3):

Si desea ver el archivo del catálogo de Scala directamente, por ejemplo, puede navegar a http://scala-tools.org/archetype-catalog.xml

Pero si el repositorio no proporciona un archetype-catalog.xml, entonces tal como dice PascalT, necesitará saber el nombre por adelantado (mucho menos conveniente) y pasarlo en argumentos de línea de comando.


El índice de nexus producido por Nexus y consumido por M2eclipse conoce todos los arquetipos y te permite elegirlos cuando creas un nuevo proyecto de experto a partir del ide.



Para la lista Maven Archetype consulte este enlace http://www.myjeeva.com/2012/06/exclusive-maven-archetype-list/ (encontrará alrededor de 607 arquetipos).

Al usar mvn archetype:generate command en la pregunta de Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 197:

proporcionar el número de arquetipo desde el enlace de arriba.

Nota: el valor predeterminado es 197

  • 197 -> org.apache.maven.archetypes: maven-archetype-quickstart (Un arquetipo que contiene una muestra del proyecto Maven).


Para ser sincero, realmente no veo el sentido de construir una lista de todos los catálogos. Me parece más "natural" elegir un proyecto primero y luego agregar el catálogo si es necesario. Esta es la razón por la cual IMO tiene más valor en una lista de arquetipos. Necesitarás su nombre de todos modos, incluso si tienes todos los catálogos en una lista.

De todos modos, aquí hay algunos candidatos;

Editar: después de la aclaración de Mateo sobre los catálogos del arquetipo.

No entiendo bien algunos conceptos y mi respuesta no es clara y correcta.

El objetivo de los catálogos es exactamente no tener que saber los nombres de los arquetipos de antemano . Están hechos para publicar arquetipos y permitir mvn archetype:generate para enumerar arquetipos. Por lo tanto, tiene sentido agregar catálogos "externos" (no entender en el interno) para obtener una lista más amplia de arquetipos conocidos al usar mvn archetype:generate .

Para arquetipos sin catálogo, los usuarios tienen que escribir un comando horrible que debe documentarse en alguna parte (porque requiere conocimiento del artefacto).

En cuanto a mis proposiciones:

  • Los arquetipos de Atlassian están en el catálogo interno. No es una buena proposición.

  • Los arquetipos de Grails no están en el catálogo interno ni en un archetype-catalog.xml publicado. No es una buena proposición.

  • ServiceMix tiene catálogos aquí http://servicemix.apache.org/tooling/ (basado en un http://servicemix.apache.org/tooling/<version>/archetype-catalog.xml patrón). Proposición válida

Una cosa divertida que aprendí al excavar esto. The maven guys proporciona una buena herramienta que ayuda a las personas a desarrollar arquetipos para crear un catálogo XML: el objetivo archetype:crawl básicamente rastrea un repositorio local de Maven en busca de arquetipos y genera / actualiza un archivo archetype-catalog.xml en ~/.m2/repository por defecto. Proyectos, las personas solo tienen que ejecutar periódicamente algo así como:

mvn archetype:crawl -Dcatalog=/var/www/html/archetype-catalog.xml

Grails no proporciona un catálogo. Para crear un proyecto, tenemos que ejecutar :

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails / -DarchetypeArtifactId=grails-maven-archetype / -DarchetypeVersion=1.0 / -DarchetypeRepository=http://snapshots.repository.codehaus.org / -DgroupId=example -DartifactId=my-app

Pero una vez que hicimos esto, tenemos el arquetipo en nuestro repositorio local. Entonces si escribimos:

mvn archetype:crawl -Dcatalog=/home/<me>/.m2/archetype-catalog.xml

El arquetipo aparece en ~/.m2/archetype-catalog.xml y ahora podemos usar el mvn archetype:generate para Grails también (ver opción 5):

mvn archetype:generate ... [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: local -> maven-archetype-archetype (archetype) 2: local -> maven-archetype-j2ee-simple (j2ee) 3: local -> maven-archetype-quickstart (quickstart) 4: local -> maven-archetype-webapp (webapp) 5: local -> grails-maven-archetype (maven-project) 6: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF) ...

Esto es, por supuesto, una solución alternativa (hugly) y podría tener efectos secundarios (no verá nuevas versiones de arquetipos). En realidad, no creo que el arquetipo: el objetivo de rastreo sea para este uso. Me gustaría que todos los proyectos ellos publiquen sus arquetipos.