簡體   English   中英

如何在Maven原型XML中調用Java方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM