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

从Maven Archetype生成项目时如何自动更新pom内main class引用

问题原因

使用maven archetype:create-from-project从现有项目生成Archetype时,默认不会自动识别pom文件中硬编码的主类路径,不会自动将其替换为Archetype内置变量,因此后续生成衍生项目时会沿用原项目的主类路径。

解决方法

一次性修改当前自定义Archetype

  • 找到执行create-from-project后生成的Archetype源码目录,默认路径为原项目的target/generated-sources/archetype。
  • 进入路径src/main/resources/archetype-resources,找到模板文件pom.xml。
  • 将pom中硬编码的主类配置替换为Archetype内置变量拼接形式,示例如下:
    原配置:
    <mainClass>com.my_company.artifact_a.Application</mainClass>
    
    替换后配置:
    <!-- 若主类路径与Archetype自动生成的包路径一致,推荐使用${package}变量,适配所有自定义包名场景 -->
    <mainClass>${package}.Application</mainClass>
    <!-- 若你的包路径固定为groupId+artifactId的组合,也可以使用以下写法 -->
    <!-- <mainClass>${groupId}.${artifactId}.Application</mainClass> -->
    
  • 在Archetype源码根目录执行mvn install,将修改后的Archetype安装到本地仓库,后续用该Archetype生成项目时主类路径会自动同步更新。

永久生效配置(后续生成Archetype无需手动修改模板)

在原项目根目录新建archetype.properties文件,添加以下配置,确保生成Archetype时自动对pom文件的主类路径做变量替换:

# 指定需要做变量替换的文件后缀,默认已包含xml,可按需补充
archetype.filteredExtensions=xml,java,yml,properties

生成Archetype后自动生成的pom模板就会支持变量替换,无需手动修改。

注意事项

  • 修改Archetype后建议升级版本号,避免Maven使用本地缓存的旧版本Archetype生成项目。
  • 若你的主类存放路径和根包路径不一致,只需调整变量后的路径后缀即可,比如主类放在根包下的bootstrap子包,就写${package}.bootstrap.Application。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:06:05