如何快速搭建第一个Maven多模块聚合项目

蓮花仙者

蓮花仙者

2026-08-04

805人浏览

原创

maven多模块项目需确保父pom的packaging为pom、正确配置modules路径、子模块显式声明parent并省略version;构建时maven按依赖顺序自动编译各模块。

如何快速搭建第一个maven多模块聚合项目 - php中文网

你想在一天内跑通一个能编译、能依赖、能一键构建的Maven多模块项目,而不是卡在父POM报错、子模块找不到parent、或者mvn clean install直接失败——这需要避开初学者最常踩的三个坑:packaging没设成pom、modules路径写错、子模块里漏了parent声明。

创建根父模块(纯配置型)

用命令行在任意空目录下执行:mvn archetype:generate -DgroupId=com.example -DartifactId=myapp-parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

进入生成的myapp-parent目录,打开pom.xml,把<packaging>jar</packaging>改成<packaging>pom</packaging>——【不改这一项,后续所有子模块都无法继承,Maven会直接忽略parent配置】

删掉src目录——父模块只管协调,不放任何Java代码,留着反而会让IDE误判为可运行模块。

添加子模块(按职责分层)

myapp-parent目录下,依次执行三条命令创建三个典型子模块:

mvn archetype:generate -DgroupId=com.example -DartifactId=myapp-common -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

mvn archetype:generate -DgroupId=com.example -DartifactId=myapp-service -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

mvn archetype:generate -DgroupId=com.example -DartifactId=myapp-web -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

注意:web模块必须用maven-archetype-webapp,否则缺少web.xml骨架和src/main/webapp路径,后期集成Spring Boot会报错。

配置父POM的聚合与统一管理

打开myapp-parent/pom.xml,在<project></project>标签内,紧挨<version></version>下方插入<modules></modules>块:

<modules><module>myapp-common</module><module>myapp-service</module><module>myapp-web</module></modules>

阿里云AI平台
阿里云AI平台

阿里云AI平台

下载

<properties></properties>里定义Java版本和编码:<java.version>17</java.version><project.build.sourceencoding>UTF-8</project.build.sourceencoding>

<dependencymanagement></dependencymanagement>中声明Spring Boot Web依赖(版本号由父POM锁定):<dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-web</artifactid><version>3.3.2</version></dependency>——子模块引用时不用写<version></version>,写就反而会覆盖父级管理。

修正每个子模块的pom.xml

第一步:打开myapp-common/pom.xml,在<project></project>开头插入<parent></parent>块:

<parent><groupid>com.example</groupid><artifactid>myapp-parent</artifactid><version>1.0-SNAPSHOT</version><relativepath>../pom.xml</relativepath></parent>

第二步:删掉子模块pom里自动生成的<version>1.0-SNAPSHOT</version>——它必须由父POM统一控制,子模块里出现就是冗余且易冲突。

第三步:在myapp-service/pom.xml<dependencies></dependencies>中添加对common的依赖:<dependency><groupid>com.example</groupid><artifactid>myapp-common</artifactid></dependency>——【不写version,否则破坏继承机制】

第四步:在myapp-web/pom.xml中,除了<parent></parent>声明,还要确保<packaging></packaging>war(archetype已设好),并在<dependencies></dependencies>里同时引入service和web starter:<dependency><groupid>com.example</groupid><artifactid>myapp-service</artifactid></dependency><dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-web</artifactid></dependency>

验证构建是否成功

回到myapp-parent根目录,执行:mvn clean install -Dmaven.test.skip=true

观察控制台输出:Maven会先构建myapp-common,再构建myapp-service(因依赖common),最后构建myapp-web(因依赖service)——顺序由依赖关系决定,不是<modules></modules>里的排列顺序。

检查myapp-parent/target下无任何jar包(父模块不产出构件),而myapp-common/target/myapp-common-1.0-SNAPSHOT.jarmyapp-service/target/myapp-service-1.0-SNAPSHOT.jarmyapp-web/target/myapp-web-1.0-SNAPSHOT.war均存在且大小非零。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java Maven专题
Java Maven专题

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

2025.09.15

980

19

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

2026.05.09

182

25

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

8

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

1

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

7

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

4

10

火山引擎域名备案流程详解
火山引擎域名备案流程详解

火山引擎域名备案适合需要在火山引擎云服务器、对象存储、CDN或网站服务上绑定域名的用户参考。本专题整理备案入口、账号实名认证、备案类型选择、主体信息填写、网站信息提交、资料上传、初审核验、管局审核和备案失败排查,帮助用户完成网站上线前的备案流程。

2026.08.04

0

10

火山引擎DNS解析配置步骤
火山引擎DNS解析配置步骤

使用火山引擎DNS解析网站域名时,需要确认域名已完成管理接入,并正确配置服务器IP、CNAME地址或验证记录。本专题整理域名添加、记录类型选择、TTL设置、解析状态检查、备案和访问测试等流程,适合新手搭建网站时参考。

2026.08.04

2

10

火山引擎对象存储使用教程
火山引擎对象存储使用教程

火山引擎对象存储适合用于网站图片、视频文件、备份数据、静态资源和应用附件管理。本专题整理TOS控制台入口、存储桶创建、地域选择、权限设置、文件上传、访问链接生成、CDN加速、费用查看和常见上传或访问失败问题,帮助用户快速掌握对象存储基础操作。

2026.08.04

1

10

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习