
核心概念理解
首先,理解两个关键概念:
-
父项目/聚合模块 :就是你图片中最顶层的项目(
sky-take-out),它本身的pom.xml主要功能是管理:声明它包含了哪些子模块,并统一管理所有子模块的公共依赖和插件版本。 -
子模块 :就是
sky-common,sky-pojo,sky-server这些具体的功能模块。它们有自己独立的pom.xml,继承父项目的配置,并声明自己特有的依赖。
太棒了!从你提供的图片可以清晰地看出,"苍穹外卖"项目是一个标准的 Maven 多模块项目。这种结构非常适合像你们这样分工明确的中大型项目,因为它可以实现代码的复用、模块化管理和依赖清晰化。
下面我为你详细讲解如何在 IntelliJ IDEA 中从头创建这样一个多模块项目,并解释其核心思想。
🛠️ 一步步创建多模块项目
第一步:创建父项目(聚合项目)
父项目本身通常不写业务代码,它只是一个"容器"。
-
新建项目 :打开 IDEA,选择
File->New->Project...。 -
选择Maven :在左侧选择
Maven。不要勾选Create from archetype(我们从零开始创建)。直接点击Next。 -
填写坐标:
-
GroupId :
com.sky(根据项目实际修改) -
ArtifactId :
sky-take-out(这是父项目的名称) -
Version : 默认
1.0-SNAPSHOT即可。
-
-
完成创建 :点击
Finish。IDEA 会创建一个最基础的 Maven 项目,里面只有一个pom.xml文件。(会有.idea,src, pom.xml,直接删除src)
第二步:修改父项目的 pom.xml
这是最关键的一步,需要将打包方式改为 pom,并预先声明子模块。(这一步不修改也可以)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sky</groupId>
<artifactId>sky-take-out</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 关键!打包方式必须为 pom -->
<packaging>pom</packaging>
<!-- 1. 在这里预先声明所有子模块 -->
<modules>
<module>sky-common</module>
<module>sky-pojo</module>
<module>sky-server</module>
</modules>
<!-- 2. 在这里统一管理所有模块的公共依赖版本 -->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>2.7.18</spring-boot.version>
<!-- 其他依赖版本 -->
</properties>
<!-- 3. 依赖管理(可选但推荐),子模块引用这里的依赖无需写版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 其他需要统一版本的依赖 -->
</dependencies>
</dependencyManagement>
</project>
第三步:创建子模块
现在,我们基于父项目来创建子模块。
-
右键父项目 :在 IDEA 的项目工具窗口中,右键点击父项目名称(
sky-take-out)。 -
新建模块 :选择
New->Module...。 -
同样选择Maven :和创建父项目一样,选择
Maven,不选 Archetype,点击Next。 -
填写子模块坐标:
-
Name :
sky-common(IDEA 会自动将ArtifactId填充为同名)。 -
注意看 Parent 一栏,应该已经自动显示为
com.sky:sky-take-out。这非常重要!
-
-
完成创建 :点击
Finish。
重复步骤 1-5,依次创建 sky-pojo和 sky-server模块。创建完成后,你的项目结构就会和图片中一模一样了。

💡 多模块项目设计思路(为什么这么分?)
理解每个模块的职责,对你后续开发和维护至关重要:
-
sky-common :公共工具模块 。存放整个项目通用的类,如常量、工具类(DateUtils, StringUtils)、基础配置、异常处理、通用AOP等。所有其他模块都可以依赖它。 -
sky-pojo :实体/模型模块 。存放所有数据模型类,如与数据库表对应的Entity、前后端交互的DTO/VO、查询参数Query等。sky-server会依赖它。 -
sky-server :主应用模块 。包含Spring Boot启动类、控制器Controller、业务服务Service、数据层Mapper/Repository、配置文件等。它是最终需要运行和打包的模块。它会依赖sky-common和sky-pojo。
✅ 验证与运行
创建完成后,在IDEA右侧的Maven工具窗口中,你应该能看到一个清晰的树形结构。你可以点击父项目的 Lifecycle中的 clean、compile、package等命令,Maven会按照依赖顺序自动构建所有模块。