我正在尝试在本地存储库中安装自定义原型(prototype)。当用户基于此原型(prototype)生成项目时,他们需要提供 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)
在这个原型(prototype) xml 中插入 Java String 方法的正确方法是什么?
最佳答案
加号在这里不能用作字符串连接运算符,也不需要它。只需连接两个替换(之间没有任何运算符):
<defaultValue>${artifactId.toLowerCase().substring(0,1).toUpperCase()}${actifactId.toLowerCase().substring(1)}</defaultValue>
关于java - 如何在 Maven 原型(prototype) XML 中调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42935230/