JAVA后端开发——多模块项目重命名体系解析

在使用多模块 Spring Boot 项目时,我们经常会遇到这样一个问题:

在 IDEA 中右键模块 → 重命名,会看到三个选项:

  • 重命名模块(Rename Module)
  • 重命名目录(Rename Directory)
  • 重命名模块和目录(Rename Module & Directory)

与此同时,Maven 多模块项目中又存在:

  • <artifactId>
  • <module>
  • 目录名

这些"名字"看起来很像,但其实完全不是一个体系

如果不搞清楚,在做项目改造(比如改项目名、拆模块)时,很容易踩坑。


一、IDEA 的三个"重命名"到底在改什么?

1、重命名模块(Rename Module)

👉 修改的是:

IDEA 的 Module 名(IDE 内部标识)

特点:

  • 只影响 IDEA
  • 不影响 Maven
  • 不影响目录
  • 不影响 pom.xml

本质是改:

text 复制代码
.iml 文件 + .idea/modules.xml

👉 可以理解为:IDE 里的"显示名 / 逻辑名"


2、重命名目录(Rename Directory)

👉 修改的是:

操作系统里的文件夹名称

例如:

text 复制代码
order-service → order-service-new

特点:

  • 会影响 Maven(因为路径变了)
  • 不会自动修改 pom.xml
  • 不会改 <module>

👉 本质是:改物理路径


3、重命名模块和目录(Rename Module & Directory)

👉 同时做两件事:

  • 改 IDEA Module 名
  • 改文件夹名

但注意:

仍然不会修改 Maven 的 pom.xml


二、Maven 多模块中的"名字体系"

一个模块在 Maven 中,其实有三种"名字":


1、<artifactId>(最核心)

xml 复制代码
<artifactId>order-service</artifactId>

👉 作用:

  • 唯一标识模块(配合 groupId)
  • 生成的 jar 名
  • 依赖引用使用

👉 这是 Maven 世界的"真正名字"


2、<module>(父工程引用)

xml 复制代码
<modules>
    <module>order-service</module>
</modules>

👉 本质:

目录路径(相对路径)

Maven 会去找:

text 复制代码
./order-service/pom.xml

3、目录名(文件夹)

text 复制代码
order-service/

👉 作用:

  • <module> 引用
  • 组织代码结构

三、三者关系总结(核心认知)

名称 属于谁 是否影响构建 本质
Module 名(IDEA) IDEA IDE 标识
目录名 文件系统 路径
<module> Maven 路径引用
<artifactId> Maven 构建坐标

四、为什么会"改了目录就报错"?

因为:

👉 <module> = 目录路径

如果你只改:

text 复制代码
order-service → order-service-new

但父 POM:

xml 复制代码
<module>order-service</module>

👉 Maven 会找:

text 复制代码
./order-service/pom.xml ❌(不存在)

于是报错:

text 复制代码
Child module does not exist

五、实战:多模块项目重命名(ruoyi → mobilecom)

假设你的项目结构:

text 复制代码
ruoyi/
 ├── ruoyi-admin
 ├── ruoyi-system
 ├── ruoyi-common
 └── pom.xml

现在你要改成:

text 复制代码
mobilecom/
 ├── mobilecom-admin
 ├── mobilecom-system
 ├── mobilecom-common

1、改造步骤(推荐顺序)


第一步:修改根工程(父 POM)

xml 复制代码
<artifactId>mobilecom</artifactId>

同时:

xml 复制代码
<modules>
    <module>mobilecom-admin</module>
    <module>mobilecom-system</module>
    <module>mobilecom-common</module>
</modules>

第二步:修改子模块 artifactId

例如:

xml 复制代码
<artifactId>ruoyi-admin</artifactId>

改为:

xml 复制代码
<artifactId>mobilecom-admin</artifactId>

所有模块都要改。


第三步:修改目录名(非常关键)

text 复制代码
ruoyi-admin → mobilecom-admin
ruoyi-system → mobilecom-system

第四步:修改父子引用关系

子模块中:

xml 复制代码
<parent>
    <groupId>xxx</groupId>
    <artifactId>ruoyi</artifactId>
</parent>

改为:

xml 复制代码
<artifactId>mobilecom</artifactId>

第五步:全局搜索替换(按需替换)

搜索:

text 复制代码
ruoyi

可能涉及:

  • 包名(package)
  • 配置文件(yml)
  • 日志路径
  • 前端接口路径

第六步:重新导入 Maven

在 IDEA:

text 复制代码
Reload Maven Project

2、常见坑

❌ 只改目录

👉 父 <module> 没改 → 直接炸


❌ 只改 artifactId

👉 依赖引用全失效


❌ 忘记改 parent

👉 子模块找不到父工程


❌ 本地缓存问题

建议执行:

bash 复制代码
mvn clean install -U

六、推荐最佳实践

1、命名统一原则

text 复制代码
artifactId = 目录名 = Module 名(IDEA)

例如:

text 复制代码
mobilecom-admin/
artifactId: mobilecom-admin
Module: mobilecom-admin

2、展示名称用 <name>

xml 复制代码
<name>移动通信后台服务</name>

七、总结

IDEA 的 Module 是"开发视角",Maven 的 artifactId 是"构建视角",而 <module> 只是"路径"。
改名字本质上不是"改一个地方",而是要同时修改:路径、引用关系、构建坐标。

相关推荐
懒鸟一枚2 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
玖玥拾3 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
铅笔侠_小龙虾4 小时前
Rust 学习目录
开发语言·学习·rust
我命由我123454 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑4 小时前
Sentinel安装
java·后端·微服务
云泽8084 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
灯澜忆梦4 小时前
GO---可见性规则
开发语言·golang
逝水无殇5 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
这是个栗子5 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ6 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构