0

0

Maven Archetype 多 Module 自定义代码脚手架

蓮花仙者

蓮花仙者

发布时间:2025-07-20 12:32:10

|

893人浏览过

|

来源于php中文网

原创

大多数公司都有一个通用的模板项目,帮助你快速创建一个新项目。这种项目通常需要集成一些公司内部的中间件、单元测试、标准的代码格式和通用的代码分层等。

今天,我们将利用 Maven 的 Archetype 插件来简化这一过程。

Maven Archetype 多 Module 自定义代码脚手架从上图可以清楚地看到,利用这个插件机制只需几个简单的步骤:

  1. archetype:create-from-project:根据自己的项目代码生成原型项目。
  2. 通过 install 等命令生成原型文件。
  3. archetype:generate:通过原型生成目标项目。

看起来很简单,但如果你按照网上找到的资料操作,你会发现生成的项目可能不够理想,甚至包括官方文档也无法完全解决问题。步骤似乎很简单,但实际上会遇到许多问题,比如 module 名称不会变化、包名改变后代码中未更新,依赖报错等。

接下来,我们详细说明如何创建和使用 Archetype。

创建 Archetype

首先,准备好我们自己的模板项目,确保代码都是正确的。

进入项目根目录,执行以下命令:

mvn archetype:create-from-project

执行后,项目根目录下会生成 target 文件夹。这个步骤很简单,不会有任何障碍。请注意每个模块的名字,我已经对其进行了修改。

Maven Archetype 多 Module 自定义代码脚手架这里最关键的部分是如何修改 target/generated-sources/src/main/resources/archetype-resources 下的文件。

如果不进行修改,直接继续的话,最终生成的项目会发现 module 的名称不会变化,包名也不会更新,代码中引用的依赖会出现大量错误。

接下来,我们看看如何修改这些问题。

修改父 pom

首先,找到根目录的 pom 文件,会发现缺少 module 信息,必须添加以下内容:

<modules>
    <module>${rootArtifactId}-client</module>
    <module>${rootArtifactId}-common</module>
    <module>${rootArtifactId}-service</module>
    <module>${rootArtifactId}-facade</module>
    <module>${rootArtifactId}-starter</module>
</modules>

父 pom 中引用的每个 module 也要修改,groupIdartifactId 按照以下方式修改,不要写死:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${groupId}</groupId>
            <artifactId>${rootArtifactId}-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        ... ...
    </dependencies>
</dependencyManagement>

修改 module

默认生成的 module 可能还是模板项目的名字,需要修改成类似 __rootArtifactId__-client 的形式,注意是双下划线。

citySHOP 多用户商城
citySHOP 多用户商城

citySHOP是一款集CMS、网店、商品、系统,管理更加科学快速;全新Jquery前端引擎;智能缓存、图表化的数据分析,手机短信营销;各种礼包设置、搭配购买、关联等进一步加强用户体验;任何功能及设置都高度自定义;MVC架构模式,代码严禁、规范;商品推荐、促销、礼包、折扣、换购等多种设置模式;商品五级分类,可自由设置分类属性;商品展示页简介大方,清晰,图片自动放大,无需重开页面;商品评价、咨询分开

下载

然后,module 中的互相引用 groupIdartifactId 按照父 pom 的方式对应修改。

修改 archetype-metadata

找到 META-INF/maven/archetype-metadata.xml 文件,修改 modules 相关的部分,重点注意 iddirname 的修改方式:

<modules>
    <module dir="__rootArtifactId__-client" id="${rootArtifactId}-client" name="${rootArtifactId}-client">
        <fileSets>
            <fileSet encoding="UTF-8" filtered="true" packaged="true">
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.java</include>
                </includes>
            </fileSet>
        </fileSets>
    </module>
    ... ...
</modules>

修改完成后,进入 target/generated-sources/archetype 目录,执行以下命令:

mvn install

顺便执行 mvn deploy 上传到 Nexus。

使用 Archetype

经过上述步骤,原型 Archetype 已经创建完成。最大的挑战在于前面的修改步骤,花费了大量时间。

接下来,我们看看如何使用 Archetype,有两种使用方式。

命令行使用

随便进入你想保存项目的路径,执行以下命令:

mvn archetype:generate -DarchetypeCatalog=local

依次按照提示输入 groupIdartifactId 即可完成创建。

让其他人使用

你的本地 Maven 仓库目录(比如 ~/.m2/repository)有一个文件 archetype-catalog.xml,共享给其他人即可。

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd">
    <archetypes>
        <archetype>
            <groupId>com.example</groupId>
            <artifactId>template-archetype</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <description>Example Project</description>
        </archetype>
    </archetypes>
</archetype-catalog>

在 IDEA 中使用

在 IDEA 中新建项目,选择 Maven,勾选 "Create from archetype",然后选择 "Add Archetype..."。

Maven Archetype 多 Module 自定义代码脚手架接着,输入我们自定义的 Archetype 的 GroupIdArtifactIdVersion 信息。

添加成功后,你就可以在列表中看到我们自己的 archetype,然后按照流程创建即可。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

182

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

225

2025.12.18

Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1944

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2118

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1160

2024.11.28

idea快捷键大全
idea快捷键大全

本专题为大家提供idea快捷键相关的文章,帮助大家解决问题。

174

2023.08.03

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

172

2024.02.23

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Rust 教程
Rust 教程

共28课时 | 6.6万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号