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

我正在尝试在本地回购中安装自定义原型。当用户基于此原型生成项目时,要求他们提供artifactId。在大多数情况下,它都是小写的。但是,主要的类名(也就是Java文件名)取决于此artifactId,且首字母大写。我不要求用户输入另一个变量,而是要调用一些String方法来将artifactId转换为类名的正确格式。

在Maven archetype: Modify 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>

页面加载而不是提交时发生struts验证 - java

请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:<action name="*Test" method="{1}" clas…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…

Struts2中的错误处理 - java

我对如何在Struts2中进行错误处理感到困惑。我希望在发生错误时将用户引导到一个中心页面。此外,当发生错误时,我希望将其记录下来,因为我使用的是log4j,因此我将其记录为log.error(e.getMessage(), e);但是,在动作类中,如果我捕获到错误(将我的所有代码放入try / catch中),则不会出现中央/常见错误页面。因此,我决定不捕…

在XSL中访问Hashmap时出现问题 - java

假设,我有一段代码: Map mappingId = new HashMap(); mappingId.put("1", "1000"); transformer.setParameter("mappingId", mappingId); transformer.transform(...); 我有…

在特定的Swing组件上设置自定义外观 - java

是否可以在Swing GUI上仅针对特定组件或组件集设置用于Synth外观的文件,而无需为其他任何组件进行更改? java参考方案 是的,有可能。将类型指定为“区域”,将其更改为“名称”,将值更改为由setName(“ componentName”)给定的特定名称;应用程序中的方法。添加这个<style id="titleBarButtons…