You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在自定义Maven Archetype中将Artifact ID转为帕斯卡命名法?

自定义Maven Archetype:用帕斯卡命名法的Artifact ID做类名前缀

实现方案

直接借助Maven Archetype自带的Velocity模板引擎,对artifactId做字符串转换,生成符合要求的类名前缀。

具体操作步骤

  1. 修改类模板文件
    找到Archetype项目里的模板类(比如src/main/resources/archetype-resources/src/main/java/__package__/Config.java.vm),把类名改成Velocity表达式拼接的形式:

    public class ${artifactId?replace('-', ' ', 'ALL')?capitalize?replace(' ', '')}Config {
        // 类的业务代码
    }
    

    拆解一下这个表达式的作用:

    • ?replace('-', ' ', 'ALL'):把artifactId里的所有-换成空格,比如sms-api变成sms api
    • ?capitalize:给每个单词首字母大写,变成Sms Api
    • ?replace(' ', ''):去掉空格,最终得到SmsApi
  2. 测试生成效果
    跑一下Archetype生成项目的命令验证:

    mvn archetype:generate -DarchetypeGroupId=你的groupId -DarchetypeArtifactId=你的archetypeId -DarchetypeVersion=你的版本 -DgroupId=com.example -DartifactId=sms-api -Dversion=1.0.0-SNAPSHOT
    

    生成后去目标目录看,应该能得到SmsApiConfig.java。

  3. (可选)复用转换逻辑
    如果多个模板都要用到这个转换,可以在模板里定义个Velocity宏:

    #macro(toPascalCase $str)
        $str?replace('-', ' ', 'ALL')?capitalize?replace(' ', '')
    #end
    

    之后在类模板里直接调用宏就行:

    public class #toPascalCase($artifactId)Config {
        // 类内容
    }
    

小提示

  • Maven Archetype默认集成了Velocity,不用额外加依赖
  • 如果你的artifactId还有下划线之类的特殊字符,直接在replace里再加个替换规则就行

内容的提问来源于stack exchange,提问作者parsa faraji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:04:59