2013-03-26 112 views
2

有没有一种方法来验证提供给Maven原型的属性?如果是这样如何?验证Maven原型属性

我在我的archetype-metadata.xml文件中有一个自定义的requiredProperty。值必须匹配一个特定的正则表达式,我想在原型期间验证:generate。

+0

不幸的是,不幸的是,没有办法对赋予原型的属性执行验证。最好的做法是根据需要标记一个属性,并提供一个默认值。 – Tome 2013-03-28 14:43:20

回答

3

我已经实现在Maven的原型此功能,并提交它作为一个拉请求:

https://issues.apache.org/jira/browse/ARCHETYPE-487

例子:

<requiredProperties> 
    <requiredProperty key="pluginPackage"> 
     <validationRegex><![CDATA[^[a-z][a-z0-9_]*(\.[a-z0-9_]+)+[0-9a-z_]$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginId"> 
     <validationRegex><![CDATA[^[a-zA-Z0-9-]+$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginName"> 
     <validationRegex><![CDATA[^([a-zA-Z_$][a-zA-Z\d_$]*\.)*[a-zA-Z_$][a-zA-Z\d_$]*$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginProvider"> 
    </requiredProperty> 
    <requiredProperty key="pluginZipFileName"> 
     <validationRegex><![CDATA[^[^*&%\s]+$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginVersion"> 
     <validationRegex><![CDATA[^[0-9]+\.[0-9]+\.[0-9]+$]]></validationRegex> 
    </requiredProperty> 
    </requiredProperties> 

然后你会获得验证的输入:

[INFO] Using property: groupId = com.nick 
Define value for property 'artifactId': abc 
Define value for property 'version' 1.0-SNAPSHOT: : 
[INFO] Using property: package = com.nick 
Define value for property 'pluginId' (should match expression '^[a-zA-Z0-9-]+$'): test-plugin525 
Define value for property 'pluginName' (should match expression '^([a-zA-Z_$][a-zA-Z\d_$]*\.)*[a-zA-Z_$][a-zA-Z\d_$]*$'): NickTest101 
Define value for property 'pluginPackage' (should match expression '^[a-z][a-z0-9_]*(\.[a-z0-9_]+)+[0-9a-z_]$'): com.nicholas.fun 
Define value for property 'pluginProvider': Nicholas DiPiazza 
Define value for property 'pluginVersion' (should match expression '^[0-9]+\.[0-9]+\.[0-9]+$'): 1.0 
Value does not match the expression, please try again: 

注意:它仍然不会正则表达式验证批输入。请参阅:https://issues.apache.org/jira/browse/ARCHETYPE-532

+0

只是连接到你自己的图书馆不是一个好的答案。链接到它,解释为什么它解决了这个问题,使用库提供代码来做到这一点,并放弃你写的代码,这是一个更好的答案。请参阅:[**什么意思是“良好”的自我推销?](http://meta.stackexchange.com/q/182212/200235) – durron597 2015-09-04 13:51:22

+3

这不是自我推销......我没有链接到我自己的图书馆,我链接到我对原问题作者使用的原始图书馆的开源贡献。这是他要求的功能的确切实现,不需要进一步解释。 – mryan 2015-09-05 17:03:15

+0

我同意刚刚添加一个链接是跛脚(虽然绝对不是自我推销,omg大声笑)。我添加了一个工作示例以及显示它正在工作的输出。 – 2017-09-28 14:04:29