2009-11-02 8 views
8

Ich bin ein Maven Plugin schreiben, und ich bin mit Standardwerten für alle Parameter wie folgt aus:Wie für ein Maven Plugin Standardwerte für einen Parameter mit mehreren Werten konfigurieren

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

Jetzt bin ich ein neues Hinzufügen Parameter, der eine Sammlung ist. Gibt es eine Möglichkeit, Standardwerte für einen Parameter wie den folgenden festzulegen?

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

Antwort

8

Zu meinem Wissen, das ist eigentlich nicht möglich ist, gibt es keine wirkliche Möglichkeit geben Standardwerte für Parametertypen mit mehreren Werten (wie Arrays, Collections, oder Maps), zumindest nicht als parameter. Ich hatte dies auch in der Vergangenheit zu tun und Lese Themen wie array (or collecton) as a default-value of a mojo configuration parameter oder configuring a list as default value for a plugin parameter mit, landete ich Ausfälle im execute() Verfahren einstellen, wie Chris in einem Kommentar zu his answer erwähnt (siehe zum Beispiel der flexmojos:wrapper Plugin sources und die parameters Parameter) .

+0

Das ist die Antwort, die ich vermutete. Ich hatte einen kurzen Blick auf den Maven-Quellcode, aber dann schien es, als brauchte ich auch die Plexus-Quelle - wo ich aufhörte. Nehmen wir an, Sie haben Recht ;-) –

+0

Nun, ich bin immer noch nicht 100% sicher, aber Flexmojos von Sonatype entwickelt, ich denke, sie sind repräsentativ für State of the Art und sind eine vertrauensvolle Referenz. –

-1

Ich glaube nicht, dass Set explizit, aber die folgenden funktionieren wird unterstützt:

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

können Sie dann so konfigurieren, mit:

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

BTW wurde dies von der genommen Parametertypen mit mehreren Werten Abschnitt auf this page, die auch andere Möglichkeiten detailliert, um Parameter mit mehreren Werten zu ermöglichen.

+0

Laut der Dokumentation, die Sie mit sich selbst verlinken, sollte jede java.util.Collection funktionieren - so kam ich zu dem ursprünglichen Plan. Es funktioniert definitiv mit einem Set in der Art, wie Sie es beschreiben. Aber das setzt keine Standardwerte, es ist die normale projektspezifische Konfiguration. Die Dokumentation erwähnt nichts über das Festlegen von Standardwerten für die mehrwertigen Parameter (oder nicht möglich). –

+1

Entschuldigung, ich habe die Frage offensichtlich nicht richtig gelesen! Allerdings glaube ich, dass die Antwort nein ist. Vor ein paar Jahren suchte ich eine ähnliche Antwort auf den Mailinglisten von Maven, und ich fand nur "Ich denke nicht" Antworten. Um den Plexus-Code zu graben (welcher Maven einen Container benutzt) und dies unterstützte diese Antwort. In den Orten, die wir dies tun wollten, haben wir nur die Standardwerte in der execute() -Methode festgelegt. – Chris