【发布时间】:2017-08-13 14:21:21
【问题描述】:
我正在尝试在我的本地存储库中安装自定义原型。当用户基于此原型生成项目时,他们需要提供 artifactId。大多数时候它都是小写的。但是,主类名(也是 java 文件名)取决于此 artifactId,首字母大写。我不想让用户输入另一个变量,而是想调用一些 String 方法来将 artifactId 转换为正确的类名格式。
在Maven archetype: Modify artifactId 中,看起来您可以在archetype-metadata.xml 中嵌入Java 方法,如下所示:
<requiredProperty key="artifactIdWithUnderscore" >
<defaultValue>${artifactId.replaceAll("-", "_")}</defaultValue>
</requiredProperty>
所以我在我的 archetype-metadata.xml 中做了类似的事情来大写第一个字母。
<requiredProperty key="artifactId" />
<requiredProperty key="serviceName">
<defaultValue>${artifactId.toLowerCase().substring(0,1).toUpperCase()+actifactId.toLowerCase().substring(1)}</defaultValue>
</requiredProperty>
但是我得到以下解析错误:
SEVERE: Parser Exception: serviceName
org.apache.velocity.runtime.parser.ParseException: Encountered "+artifactId.toLowerCase().substring(1)}" at line 1, column 55.
Was expecting one of:
"[" ...
"}" ...
at org.apache.velocity.runtime.parser.Parser.generateParseException(Parser.java:3679)
在这个原型 xml 中插入 Java String 方法的正确方法是什么?
【问题讨论】:
标签: java xml maven maven-archetype