gpt4 book ai didi

java - 我可以在我的 Maven 原型(prototype)中将 artifactId 转换为类名前缀吗?

转载 作者:太空狗 更新时间:2023-10-29 23:02:40 27 4
gpt4 key购买 nike

我正在创建一个 Maven 原型(prototype),并在项目中生成了一个以生成的项目的 Artifact ID 命名的类。

Artifact 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),但我猜这不可用,因为我遇到了错误。 合并速度模板时出错:....。我还尝试了 .replaceAll 的不同组合,但我无法获得正确的格式。

在这种情况下,有人知道从 a-hypenated-string 到 CamelCaseClassName 的方法吗?

最佳答案

无法从 Velocity 访问任意 java 类,但您可以调用现有对象的方法。在 Maven 原型(prototype)的上下文中,您可以使用 java.lang.String 中的方法和 Velocity 循环来完成工作。

#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 处理源文件。

另见:

有 2.0 版的更新文档:http://velocity.apache.org/engine/2.0/user-guide.html#loops

关于java - 我可以在我的 Maven 原型(prototype)中将 artifactId 转换为类名前缀吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23266464/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com