2009-08-20 71 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