2009-11-02 14 views
8

Estoy escribiendo un plugin de Maven y estoy usando valores por defecto para todos los parámetros, como este:Cómo configurar los valores predeterminados para un parámetro con varios valores para un plugin Maven

/** 
* The file with the site structure. 
* 
* @parameter expression="${generateSite.siteFile}" default-value="${basedir}/src/oda/site.xml" 
*/ 
private File siteFile; 

Ahora estoy añadiendo un nuevo parámetro que es una colección. ¿Hay alguna manera de establecer valores predeterminados para un parámetro como el siguiente?

/** 
* A list of file/directory names to exclude in the processing. 
* 
* @parameter ???? 
*/ 
private Set<String> excludes; 

Respuesta

8

Para mis conocimientos, en realidad esto no es posible, no hay forma real de especificar valores predeterminados para tipos de parámetros con múltiples valores (como matrices, colecciones, o mapas), al menos no como parameter. Tenía que hacer esto en el pasado también y, que tiene roscas de lectura como array (or collecton) as a default-value of a mojo configuration parameter o configuring a list as default value for a plugin parameter, que terminó la configuración de ajustes en el método execute(), como Chris mencionó en un comentario a his answer (véase, por ejemplo, el flexmojos:wrapper complemento sources y el parámetro parameters) .

+0

Esa es la respuesta que sospechaba que obtendría. Vislumbré brevemente el código fuente de Maven, pero me pareció que también necesitaba la fuente Plexus, que es donde me detuve. Supongamos que tienes razón ;-) –

+0

Bueno, todavía no estoy 100% seguro, pero los flexmojos están siendo desarrollados por Sonatype, supongo que son representativos del estado de la técnica y son una referencia de confianza. –

-1

No creo que ese conjunto se apoya de forma explícita, pero el siguiente trabajo:

/** 
* A list of file/directory names to exclude in the processing. 
* 
* @parameter 
*/ 
private String[] myFiles; 

A continuación, puede configurarlo usando:

<myFiles> 
    <param>value1</param> 
    <param>value2</param> 
</myFiles> 

BTW Esto fue tomado de la Tipos de parámetros Con valores múltiples sección en this page que también detalla otras formas de permitir parámetros con valores múltiples.

+0

De acuerdo con la documentación que se vincula a usted, cualquier java.util.Collection debería funcionar, así es como se me ocurrió el plan original. Definitivamente funciona con un Set en la forma en que lo describes. Pero eso no está configurando valores predeterminados, es la configuración normal de proyecto normal. La documentación no menciona nada sobre la configuración de valores predeterminados en los parámetros multivalor (o no poder). –

+1

Lo siento, ¡obviamente no leí la pregunta correctamente! Sin embargo, creo que la respuesta es no. Hace unos años, estaba buscando una respuesta similar en las listas de correo de Maven, y solo encontré respuestas de "No lo creo". Excavar alrededor del código Plexus (que Maven utiliza un contenedor) y esto apoyó esa respuesta. En los lugares en los que queríamos hacer esto, terminamos configurando los valores predeterminados en el método execute(). – Chris

Cuestiones relacionadas