3

我正在编写一个带有许多可配置参数的 Maven 插件。Mojo 类中指定了许多参数。这些参数之一是必需的,并且必须包含某些值(例如,“Atwood”或“Spolsky”)。目前它用a注释。@required 字段如下所示:

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' 的值需要是“阿特伍德”还是“斯波尔斯基”?

谢谢

4

1 回答 1

2

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

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

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

/**
 * @parameter expression="${someParameter}" default-value="_"
 */
private String someParameter;
于 2009-08-21T09:56:01.540 回答