java - 如何在 Maven 原型(prototype) XML 中调用 Java 方法

标签 java xml maven maven-archetype

我正在尝试在本地存储库中安装自定义原型(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/

相关文章:

android - 如何让按钮在按下时改变颜色?

javascript - Ajax 数据库的替代品

java - 如何在java中获取m2repo目录?

java - 检查各个地方后,程序在 android/Eclipse 中返回相同的经度和纬度

javascript - XML/javascript 解析节点 - 按名称指定子节点

maven - Maven 中是否有 Bash 脚本的标准位置

java - 如何修复JDK11 Tomcat9 Spring Application上的JAVAX运行时错误

java - 在 Raspberry Pi 上运行 Javafx GUI

java - Android 扩展按钮 - 从 Java 到 XML 访问成员

java - 旋转变换在处理循环时不起作用