多模块项目

5 阅读1分钟

如果说普通maven项目是一个“单身公寓”(厨房、卧室、厕所都在一个房间里),那么由多个maven项目组成的多模块项目就像一套“三室两厅”的房子:每个房间功能明确,但都共用一套地暖和电路。

典型的多模块结构(以电商系统为例)

my-shop (父工程,只有 pom.xml)
├── shop-common (通用工具类、常量、POJO)
├── shop-dao    (数据库访问层,MyBatis/JPA 代码)
├── shop-service (业务逻辑层,处理复杂的业务)
└── shop-web    (控制层,Spring MVC/SpringBoot 启动类)

模块间的“套娃”关系

A. 纵向:继承 (Inheritance)

  • 父 POM: 就像一个“管家”。它定义了所有子模块共用的 JDK 版本、编码格式(UTF-8)以及最重要的——三方库的版本号
  • 子 POM: 只需要说“我爸是谁”,就可以直接使用父类定义好的所有配置。

B. 横向:依赖 (Dependency)

  • 模块之间是可以互相引用的。比如 shop-service 模块需要操作数据库,那么它就在自己的 pom.xml 里添加对 shop-dao 的依赖。
  • 构建顺序: Maven 非常聪明。当你构建整个项目时,它会自动计算:必须先编译 common,再编译 dao,最后才是 service
特性单体项目 (Single Module)多模块项目 (Multi-Module)
上手难度简单,直接写就完了需要理解 Maven 继承和依赖关系
代码边界模糊,容易乱调用清晰,必须通过依赖引入才能调用
复用性极差,只能靠复制粘贴极强,一处编写,到处引用
适合规模个人练习、小型 Demo企业级项目、中大型系统、微服务