2026年04月09日/ 浏览 9
标题:Maven Archetype 多 Module 自定义代码脚手架实战指南
关键词:Maven Archetype、多 Module、代码脚手架、自定义模板、Java 项目
描述:本文详细讲解如何通过 Maven Archetype 创建支持多 Module 的自定义代码脚手架,提升企业级项目的初始化效率,包含实战步骤与代码示例。
正文:
在 Java 企业级开发中,快速初始化标准化项目结构是提升团队协作效率的关键。Maven Archetype 作为项目模板工具,允许开发者定制符合自身需求的代码脚手架。本文将手把手带你实现一个支持多 Module 的自定义 Archetype,解决重复搭建框架的痛点。
传统单 Module 项目难以满足复杂业务的分层需求。例如微服务场景下,通常需要拆分为 api、core、web 等子模块。通过自定义多 Module Archetype,可以:
1. 统一技术栈版本(Spring Boot/MyBatis 等)
2. 规范包结构(如 com.company.product.module)
3. 预置通用配置(Logback、Swagger 等)
使用 Maven 命令生成原型骨架:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-archetype \
-DgroupId=com.your.company \
-DartifactId=multi-module-template
生成的目录结构中,src/main/resources/archetype-resources 是模板存放位置。
修改 archetype-resources/pom.xml 为父 POM,添加子模块声明:
<modules>
<module>${rootArtifactId}-api</module>
<module>${rootArtifactId}-service</module>
<module>${rootArtifactId}-web</module>
</modules>
为每个子模块创建对应的目录和 pom.xml 模板文件,例如:
archetype-resources/
├── __rootArtifactId__-api/
│ ├── src/main/java/
│ └── pom.xml
├── __rootArtifactId__-service/
│ ├── src/main/resources/
│ └── pom.xml
使用 ${variable} 语法实现用户输入替换。例如在 archetype-metadata.xml 中定义交互参数:
<requiredProperties>
<property>
<name>springBootVersion</name>
<defaultValue>3.1.0</defaultValue>
</property>
</requiredProperties>
通过 Velocity 模板引擎实现逻辑判断。例如根据用户选择是否添加 Redis 配置:
#if( $needRedis == "y" )
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
#end
在模板中预置 GitHub Actions 或 Jenkinsfile:
yaml
name: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
– uses: actions/checkout@v3
– name: Build with Maven
run: mvn clean package
archetype-resources/README.md 模板说明使用方式 mvn archetype:create-from-project 本地测试模板