Maven原型所需的属性号
我有一个Maven archtype,它使用一个包含数字的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中,任何静态方法都
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但我同意,使用它会更干净,甚至更好