在我正在创建的这个maven原型中,我尝试从artifact用宏获取一个字符串值,其中artifactId作为输入。返回的字符串将被指定为类的名称。如果artifactId是单个单词,我将首字母大写。如果它是与.
连接的一系列字符串,我会使用最后一个单词并将第一个字母设为大写。
#macro( capital $str )
#if( $str.contains(".") )
#$str.substring($str.lastIndexOf('.')).substring(1,2).toUppercase()$str.substring($str.lastIndexOf('.')).substring(2)
#else
#$str.substring(0,1).toUppercase()$str.substring(1)
#end
#end
#set( $className = "#capital( $artifactId )" )
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.client;
public interface ${className} {
//...
}
然后我用mvn clean install
安装了原型。但是,在从此原型生成的项目中,类名显示为:
public interface #$str.substring(0,1).toUppercase()yapp
好像' $ str.substring(1)was correctly executed. However the first part
$ str.substring(0,1).toUppercase()`不起作用。
我做错了什么?
答案 0 :(得分:0)
我认为你弄乱了toUppercase
方法的外壳。
尝试更改
#$str.substring(0,1).toUppercase()$str.substring(1)
与
#$str.substring(0,1).toUpperCase()$str.substring(1)