[英]How to call Java methods in Maven archetype XML
我正在嘗試在本地存儲庫中安裝自定義原型。 當用戶基於此原型生成項目時,要求他們提供artifactId。 在大多數情況下,它都是小寫的。 但是,主要的類名(也就是Java文件名)取決於此artifactId,且首字母大寫。 我不要求用戶輸入另一個變量,而是要調用一些String方法來將artifactId轉換為類名的正確格式。
在Maven原型中:修改artifactId ,看起來您可以將Java方法嵌入archetype-metadata.xml中,如下所示:
<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方法的正確方法是什么?
這將大寫第一個字母。
<requiredProperty key="artifactId" />
<requiredProperty key="serviceName">
<defaultValue>${StringUtils.capitalize("artifactId")}</defaultValue>
</requiredProperty>
確保您包括Apache Commons依賴項。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
加號字符在此處不能用作字符串連接運算符,也不需要。 只需串聯兩個替換項(之間沒有任何運算符):
<defaultValue>${artifactId.toLowerCase().substring(0,1).toUpperCase()}${actifactId.toLowerCase().substring(1)}</defaultValue>
<defaultValue>
${artifactId.substring(0,1).toUpperCase()}${artifactId.substring(1).toLowerCase()}
</defaultValue>
為我工作,但artifactId來自原型項目,而不是預期的來自我的參數artifactId ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.