2010-08-11 25 views
11

He creado un arquetipo Maven para una configuración de proyecto personalizada, que está funcionando maravillosamente, pero me preguntaba si es posible pasar parámetros adicionales para poder hacer algunas plantillas más interesantes. He intentado algo así comoPasando propiedades adicionales al arquetipo maven: generar

mvn archetype:generate -DarchetypeCatalog=local -DdbHost=localhost 

y poner

... 
<option name="db.host.config.option" value="${dbHost}" /> 
... 

en mi plantilla, pero eso no parece funcionar. ¿Hay alguna manera de hacer esto con un arquetipo?

Respuesta

16

Solo tiene que mencionar dbHost como requiredProperty en META-INF/maven/archetype-metadata.xml.

<archetype-descriptor name="basic"> 
    <requiredProperties> 
     <requiredProperty key="dbHost"/> 
    </requiredProperties> 
</archetype-descriptor> 
+0

Gracias, ¿podría ampliarse en eso un poco? No estoy seguro de estar lo suficientemente familiarizado con la sintaxis. – Ceilingfish

+2

seguro. En su proyecto de arquetipo, debe crear una carpeta proyecto/META-INF/maven. En esa carpeta, debe crear un archivo llamado archetype-metadata.xml. En ese archivo, debe agregar las etiquetas requiredProperty para cada uno de los argumentos de configuración que le gustaría tener. Puede encontrar más detalles aquí http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html – devsprint

+0

He intentado esto, pero me encontré con la confusión entre si esto debería ir en arquetipo- metadata.xml (como usted sugiere) o ponerlo en archetype.xml, y parte del contenido de archetype.xml no parece funcionar si lo pongo en archetype-metadata.xml, y teniendo problemas si trato de tener ambos archivos en mi arquetipo juntos. Consulte http://stackoverflow.com/questions/36342578/whats-the-difference-between-archetype-xml-and-archetype-metadata-xml-in-maven – Jibbyj

7

Aunque esta pregunta es bastante antiguo, voy a dar mi propia experiencia con Maven 3.04

Mientras generar el arquetipo de un proyecto (crear-de-proyecto), puede pasar un archivo de propiedad como argumento. Cada propiedad individual (clave = valor) transferida generará a su vez requiredProperty en el archivo archetype-metadata.xml, con "valor" como valor predeterminado.
Por otro lado, el proceso de generación de arquetipo buscará el "valor" de cadena en nuestros archivos de texto y lo reemplazará por "$ {key}" (es decir, dbHost = db.host.config.option buscará "db .host.config.option "y reemplázalo por $ {dbHost}).

Mientras utilizando el arquetipo para la generación final del proyecto (con generar) se nos ofrece la oportunidad de proporcionar un valor para este parámetro, por -D clave = valor. Por lo tanto, no es necesario editar manualmente el archivo archetype-metadata.xml.

+0

¿Puede publicar un ejemplo sobre cómo pasar un archivo de propiedad como argumento? a 'mvn archetype: create-from-project'? –

0

necesitamos pasar los valores de las propiedades en el símbolo del sistema también manteniéndolo en archetype-metadat.xml pero aquí el nombre no debe contener "." símbolo ya que no le permite actualizar los valores.

Es restricción en Maven para no utilizar nombre como prod.ex.version puede utilizar prod-ex-versión

Cuestiones relacionadas