苍穹外卖是如何从0搭建一个标准的 Maven 多模块项目的?

核心概念理解

首先,理解两个关键概念:

  1. ​​父项目/聚合模块​ ​:就是你图片中最顶层的项目(sky-take-out),它本身的 pom.xml主要功能是​​管理​​:声明它包含了哪些子模块,并统一管理所有子模块的公共依赖和插件版本。

  2. ​​子模块​ ​:就是 sky-common, sky-pojo, sky-server这些具体的功能模块。它们有自己独立的 pom.xml,继承父项目的配置,并声明自己特有的依赖。

太棒了!从你提供的图片可以清晰地看出,​​"苍穹外卖"项目是一个标准的 Maven 多模块项目​​。这种结构非常适合像你们这样分工明确的中大型项目,因为它可以实现代码的复用、模块化管理和依赖清晰化。

下面我为你详细讲解如何在 IntelliJ IDEA 中从头创建这样一个多模块项目,并解释其核心思想。


🛠️ 一步步创建多模块项目

第一步:创建父项目(聚合项目)

父项目本身通常不写业务代码,它只是一个"容器"。

  1. ​​新建项目​ ​:打开 IDEA,选择 File-> New-> Project...。

  2. ​​选择Maven​ ​:在左侧选择 Maven。不要勾选 Create from archetype(我们从零开始创建)。直接点击 Next。

  3. ​​填写坐标​​:

    • ​​GroupId​ ​: com.sky(根据项目实际修改)

    • ​​ArtifactId​ ​: sky-take-out(这是父项目的名称)

    • ​​Version​ ​: 默认 1.0-SNAPSHOT即可。

  4. ​​完成创建​ ​:点击 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>
第三步:创建子模块

现在,我们基于父项目来创建子模块。

  1. ​​右键父项目​ ​:在 IDEA 的项目工具窗口中,右键点击父项目名称(sky-take-out)。

  2. ​​新建模块​ ​:选择 New-> Module...。

  3. ​​同样选择Maven​ ​:和创建父项目一样,选择 Maven,不选 Archetype,点击 Next。

  4. ​​填写子模块坐标​​:

    • ​​Name​ ​: sky-common(IDEA 会自动将 ArtifactId填充为同名)。

    • 注意看 ​​Parent​ ​ 一栏,应该已经自动显示为 com.sky:sky-take-out。这非常重要!

  5. ​​完成创建​ ​:点击 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会按照依赖顺序自动构建所有模块。

相关推荐
蛋蛋的就会顺顺的39 分钟前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
余槐i1 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹1 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo1 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
需要8261 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡1 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
骇客野人2 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台3 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
伯恩bourne3 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_4 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi