2009-08-20 53 views
3

我在写一个带有多个可配置参数的maven插件。在Mojo类中指定了许多参数。其中一个参数是必需的,并且必须包含某些值(比如'Atwood'或'Spolsky')。目前它被注释了一个。 @Required字段显示在这里:限制Java Maven插件配置参数

public class GenerateMojo extends AbstractMojo{ 
    ... 
    ... 

    /** 
    *@parameter 
    *@required 
    */ 
    private String someParameter; 
    ... 
    ... 
} 

这是一切都很好,但如果有人忘了包括参数,他们得到一个一般性错误消息,像这样:

Inside the definition for plugin 'xyz' specify the following: 
<configuration>  
    ... 
    <someParameter>VALUE</someParameter> 
</configuration> 

如果可能要么(1)限制可以输入到someParmeter字段的值以提供更好的错误消息,或者(2)自己指定错误消息,以便我可以写出类似于“someParameter'的值需要为'Atwood '或'Spolsky'?

感谢

回答

2

有一个开放的Jira添加对枚举在Maven的2.2的参数值的支持(它已经支持丛于Java 5)。

您可以指定一个默认值,以便至少Mojo在初始化时不会失败。然后,您可以验证execute()方法中参数的值并输出更有用的消息。

如果没有合理的默认值,可以将默认值设置为在execute()方法中失效的值,这实际上意味着用户必须定义​​它,并且它们会得到一个有意义的错误消息。例如:

/** 
* @parameter expression="${someParameter}" default-value="_" 
*/ 
private String someParameter; 
+0

谢谢,使用假的默认值会很好。 – Lehane 2009-08-21 11:11:30

+0

我不会说这很棒,请留意Jira,因为枚举是一个更好的解决方案 – 2009-08-21 11:13:44