我正在创建一个 Maven 原型,并在生成的项目中想要一个以生成的项目的工件 id 命名的类。
工件 ID 的格式如下:the-project-name
并且该类应命名为TheProjectNameMain
.
我尝试在我的archetype-metadata.xml
但我做不到。
<archetype-descriptor>
<requiredProperties>
<requiredProperty key="classNamePrefix">
<defaultValue>${WordUtils.capitalize(artifactId.replaceAll("-", " ")).replaceAll(" ", "")}</defaultValue>
</requiredProperty>
</requiredProperties>
</archetype-descriptor>
正如你所看到的,我尝试使用 WordUtils(来自 apache-commons),但我猜这不可用,因为我收到错误。Error merging velocity templates:....
。我也尝试过不同的组合.replaceAll
但我无法获得正确的格式。
在这种情况下,有谁知道从连字符字符串到 CamelCase 类名的方法吗?
无法从 Velocity 访问任意 java 类,但您可以调用现有对象的方法。在 Maven 原型的上下文中,您可以使用以下方法java.lang.String
和一个速度循环来完成工作。
#macro( ccase $str )
#foreach( $word in $str.split('-') )$word.substring(0,1).toUpperCase()$word.substring(1)#end
#end
#set( $classNamePrefix = "#ccase( $artifactId )" )
public class ${classNamePrefix}Application {
// ...
}
如果您使用的是fileSet
标记、添加filtered="true"
属性以确保使用 Velocity 处理源文件。
也可以看看:
- http://velocity.apache.org/engine/1.4/user-guide.html#Loops http://velocity.apache.org/engine/1.4/user-guide.html#Loops
2.0版本有更新的文档:http://velocity.apache.org/engine/2.0/user-guide.html#loops http://velocity.apache.org/engine/2.0/user-guide.html#loops
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)