2009-11-02 41 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

相关问题