2009-11-02 35 views
8

我正在寫一個Maven插件,我使用了缺省值的所有參數,如這樣的:如何配置具有多個值的參數默認爲一個Maven插件

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

現在我加入了新的參數是一個集合。有沒有一種方法可以爲下面的參數設置默認值?

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

回答

8

知識,這實際上是不可能的,有用於參數類型的多個值指定默認值沒有真正的方法(如數組,集合或地圖),至少不是parameter。我不得不這樣做,在過去也和具有讀取線程像array (or collecton) as a default-value of a mojo configuration parameterconfiguring a list as default value for a plugin parameter,我結束了在​​方法設置默認值,像Chris在評論中提及到his answer(參見例如flexmojos:wrapper插件sourcesparameters參數) 。

+0

這就是我懷疑我會得到的答案。我簡要地瞭解了Maven源代碼,但是看起來我也需要Plexus源代碼 - 這是我停止的地方。讓我們假設你是對的;-) – 2009-11-03 00:13:40

+0

嗯,我仍然不是100%確定,但是由Sonatype開發的flexmojos,我想它們是最先進的代表,並且是可信的參考。 – 2009-11-03 00:47:33

-1

我不認爲設置明確支持,但下面的工作:

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

可以使用,對其進行配置:

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

BTW這從拍攝具有多個值的參數類型有關this page的部分,其中還詳細介紹了允許具有多個值的參數的其他方法。

+0

根據您鏈接到自己的文檔,任何java.util.Collection都應該可以工作 - 這就是我如何提出原始計劃。它確實可以用你描述的方式與Set一起工作。但是這不是設置默認值,它是正常的項目特定配置。該文檔沒有提到有關在多值參數上設置默認值(或不能)的任何信息。 – 2009-11-02 04:06:36

+1

對不起,我顯然沒有正確閱讀這個問題! 但是,我相信答案是否定的。幾年前,我在Maven郵件列表上尋找類似的答案,我只找到「我不這麼認爲」的答案。挖掘Plexus代碼(Maven使用容器)並支持該答案。 在我們想要做這個的地方,我們最終只是在execute()方法中設置了默認值。 – Chris 2009-11-02 06:27:42

相關問題