2017-05-04 18 views
0

私が作成しているこのMavenのアーキタイプでは、artifactIdを入力としてVelocityマクロから文字列値を取得しようとしています。返された文字列は、クラスの名前として割り当てられます。 artifactIdがシングルワードの場合は、最初の文字を大文字にします。 .で連結された一連の文字列の場合は、最後の単語をとり、最初の文字を大文字にします。Velocityマクロで文字列を連結する方法

#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でアーキタイプをインストールしました。しかし、この原型から生成されたプロジェクトでは、クラス名は示しています。それは「$のstr.substringのように思える

public interface #$str.substring(0,1).toUppercase()yapp 

(1)was correctly executed. However the first part $(0,1).toUppercase() `やったstr.substringうまくいかない。

どうしたのですか?

答えて

0

あなたはtoUppercaseメソッドのケーシングを乱したと思います。

#$str.substring(0,1).toUpperCase()$str.substring(1) 

#$str.substring(0,1).toUppercase()$str.substring(1) 

を変更してみてください

関連する問題