IntelliJ IDEA中子模块需通过正确配置parent继承父工程的dependencyManagement才能统一依赖版本;必须删除父工程src目录、设packaging为pom、确保子模块pom中parent坐标与父工程完全一致,否则将出现ClassNotFoundException、Lombok失效等错误。

在IntelliJ IDEA中让子模块正确调用父工程定义的统一依赖、版本和插件,是多模块Spring Boot项目能正常编译、启动和协作开发的前提,否则会出现ClassNotFoundException、版本冲突、Lombok注解不生效、甚至Maven导入失败等连锁问题。
创建父工程并配置基础POM
打开IDEA → File → New → Project → 选择 Maven → 取消勾选 “Create from archetype” → Next。
填写 GroupId(如 com.example)、ArtifactId(如 my-parent)→ Next → 指定项目路径 → Finish。
创建完成后,【立即删除父工程下的 src 目录】,因为父工程只作依赖管理和模块聚合,不写业务代码;删错会导致后续子模块无法继承,且IDEA会误将其识别为普通Java模块。
打开父工程的 pom.xml,将 packaging 改为 pom,并补充 parent、properties 和 dependencyManagement 块。其中 spring-boot-starter-parent 的 version 必须与你实际使用的 Spring Boot 版本严格一致,例如 3.2.5;填错会导致所有子模块的 starter 自动配置失效。
添加子模块并自动继承父依赖
在项目根目录(即父工程名上)右键 → New → Module → 选择 Maven → 勾选 “Create from archetype”,再选 maven-archetype-quickstart → Next。
填写子模块的 GroupId(建议与父工程一致)、ArtifactId(如 user-service)→ Next → 确保 “Module file location” 路径显示在父工程文件夹内部(如 /my-parent/user-service)→ Finish。
IDEA会自动生成子模块的 pom.xml,并在其中插入 <parent> 标签指向父工程。这一步不能手动改错 groupId 或 version,否则 【Maven 将完全忽略父工程的 dependencyManagement,子模块依赖全部失控】。
此时无需额外操作,子模块已继承父工程声明的所有 managed 依赖版本——比如你在父工程里锁定了 lombok 1.18.32,那子模块即使不写 version,引入 lombok 也会默认使用该版本。
验证子模块能否调用父工程管理的组件
方法一:在子模块的 src/main/java 下新建包 com.example.user,再新建一个类 UserServiceImpl:
在类中输入 @Data(来自 Lombok),IDEA 应无报错且能自动补全 getter/setter;若标红或提示 Cannot resolve symbol 'Data',说明父工程的 lombok 未被子模块继承成功,需检查子模块 pom.xml 中 <parent> 的 groupId、artifactId、version 是否与父工程完全一致。
方法二:在子模块的 pom.xml 中添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>,不写 <version> 标签 → 刷新 Maven → 查看 External Libraries 中 spring-boot-starter-web 的版本是否与父工程 properties 里定义的 spring-boot.version 完全相同。
方法三:在子模块中编写一个 @RestController 类,添加 @GetMapping("/test") 方法 → 点击绿色三角形运行 → 成功启动并访问 http://localhost:8080/test 返回结果,证明 spring-boot-starter-web 与内嵌 Tomcat 已被正确拉起。


















