2011-01-25 20 views
17

Estoy buscando una guía sobre cómo crear nuevos arquetipos maven que impliquen el uso de parámetros para crear directorios y nombres de archivos donde los parámetros se usan como prefijos en los nombres de archivos y parte de la estructura/directorios del paquete creados por el arquetipo.¿Alguna buena guía avanzada sobre cómo crear nuevos arquetipos maven?

Todo lo que puedo encontrar son instrucciones muy sencillas sobre cómo hacer proyectos muy simples.

Respuesta

8

¿por qué no utilizar el sitio web de maven?

http://maven.apache.org/guides/mini/guide-creating-archetypes.html

+3

Solo me proporciona lo básico. Incluso tomaría una definición de arquetipo de fuente abierta que puedo usar como plantilla para lo que quiero hacer. – menapole

+1

tanto lo siento mal, he entendido mal la última parte "instrucciones simples sobre cómo hacer proyectos muy simples". – fmucar

+0

¿Quieres crear algo así como una aplicación pero con maven entonces http://static.appfuse.org/? – fmucar

1

Incluso yo estoy buscando la misma cosa. Incluso encuentro que la página principal de Maven es muy básica y no cumple con nuestros requisitos.

Incluso intenté HowToCreateMavenArchetypeFromProject Pero todavía tengo una pregunta. Cómo invocar un archivo específico del arquetipo cuando se genera el proyecto de ese tipo de arquetipo. Para ser específico, si tengo una aplicación java App.java, ¿cómo invocar eso al crear un proyecto?

Lo que sucede con create-archetype-from-project es que crea un proyecto con los mismos archivos y la misma estructura de directorios y necesitamos ejecutar eso nuevamente para que eso ocurra.

Además, $ {groupId} y esas cosas solo funcionan en los archivos maven. ¿Qué ocurre si tengo un archivo de propiedad y quiero usar el artefacto que el usuario ingresó?

Hágame saber si encuentra algo bueno. Mientras tanto, también te dejaré saber cuando encuentre alguna solución.

Gracias

3

Creo que nos encontramos con el mismo problema, por fin resolví con iluminador de esta article

suponiendo que desea generar el paquete com.company.base. dal.dao, que llamamos com.company.base se paquete raíz, dal.dao es el paquete básico, a continuación, sólo hay que poner el archivo de plantilla en java src// java/dal/DAO principal, y ajustar la packaged="true" en META-INF/experto/arquetipo-metadata.xml como a continuación

  <fileSet filtered="true" packaged="true" encoding="GBK"><!--packaged="true" tells maven to copy the core package in to root package while creating a project.--> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/*.java</include> 
      </includes> 
     </fileSet> 

decir, si se establece -Dpackage=com.alibaba.china después de ejecutar mvn arquetipo: generar, se creará el paquete fuente de java como com/Alibaba/China/dal/DAO /sample.java

cómo dar la información del paquete de prefijo en la muestra.java, sólo tiene que utilizar $ {paquete} de la siguiente manera

package ${package}.dal.dao; 

el plugin arquetipo reemplazará $ {paquete} con -Dpackage como plantilla de velocidad

+0

Gracias, esto me ayudó pero necesitaba cambiar la codificación a 'UTF-8'. Además, el enlace está muerto, así que es bueno que haya incluido suficiente información en la respuesta. – antonyh

+0

O Sí, el GBK es para acomodar el carácter chino, UTF-8 debería estar bien –

1

de la documentacion experto: http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html

Un conjunto de archivos define la forma en que los archivos del proyecto ubicados en el archivo jar son utilizados por Archetype Plugin para generar un proyecto. Si el nombre del archivo o directorio contiene propiedad, se reemplaza con el valor de propiedad correspondiente.

si se puede nombrar el archivo como

__artifactId___local.properties

... cuando se genera el proyecto con artifactId = foo lo hará contiene este archivo:

foo_local.properties

+0

Advertencia: la expresión regular es demasiado ambiciosa, por lo que si tiene un nombre de archivo Blah___artifactId__ (subrayado triple en el medio) fallará con un mensaje tonto que dice 'puede No encuentras la variable _artifactId 'cuando realmente querías un guión bajo literal al frente. –

+1

en este caso podría hackear creando una propiedad maven underscore = _ y nombrar el archivo como Blah__underscore____artifactId_ - –

+0

Estoy de acuerdo, pero lo intenté exactamente, pero no tuve éxito: ahora he elegido cambiar la convención de nomenclatura para eliminar los guiones bajos. –

Cuestiones relacionadas