Maven原型所需的属性号

Maven原型所需的属性号,maven,velocity,maven-archetype,Maven,Velocity,Maven Archetype,我有一个Maven archtype,它使用一个包含数字的requiredProperty,但速度变量是字符串。因此,在我的模板中,我无法测试此属性是否大于一个数字: #if( $myVar gt 5 ) 我已经测试了以下内容,但没有成功 我也试过: #set( $intVar = Integer.parseInt($myVar) ) 这也是原型生成失败的原因 有什么建议吗?您不能从Velociy引用类,因此Integer.parseInt将无法工作。然而,因为在Java中,任何静态方法都

我有一个Maven archtype,它使用一个包含数字的
requiredProperty
,但速度变量是字符串。因此,在我的模板中,我无法测试此属性是否大于一个数字:

#if( $myVar gt 5 ) 
我已经测试了以下内容,但没有成功

我也试过:

#set( $intVar = Integer.parseInt($myVar) )
这也是原型生成失败的原因


有什么建议吗?

您不能从Velociy引用类,因此
Integer.parseInt
将无法工作。然而,因为在Java中,任何静态方法都可以作为实例方法调用,而Velocity只是伪装成Java,所以可以对任何整数调用
parseInt
。所以你可以试试这个技巧:

#if ($myVar.length().parseInt($myVar) gt 5)

您得到的是一个整数,从您假设的一个变量开始,
$myVar

我已经基于原型描述符中提供的正则表达式实现了用户输入验证:


希望它能为maven archetype插件的未来版本解决这个问题。

另一个使用起来更简洁的选项是在Java中构建上下文时将Integer.class设置为Velocity变量,然后在Java中引用它:context.put(“intClass”,Integer.class);在Velocity中:$intClass.parseInt($myVar),但Velocity部分是由Maven处理的,所以这样做需要在Maven中深入挖掘。@centic但我同意,使用它会更干净,甚至更好