gradle 多模块项目配置核心是 settings.gradle 注册子模块、根 build.gradle 统一工具链与仓库、子模块 build.gradle 按职责选插件并声明 project 依赖;通过 gradle projects 等命令验证结构。

Java 在 Gradle 中配置模块化项目,核心是区分“多模块”(multi-project)和“Java 平台模块系统”(JPMS,即 module-info.java 模块化)。多数人实际想问的是前者——也就是用 Gradle 管理多个子模块的工程结构。下面直接说清楚怎么做,不绕弯。
settings.gradle:让 Gradle “认出”每个模块
这是整个多模块构建的起点,必须放在项目根目录,内容严格对应真实文件夹路径:
- 用 include "模块名" 注册,例如子模块在
user-service/目录下,就写include "user-service" - 嵌套路径用冒号分隔,如
infrastructure/logging-core→ 写include "infrastructure:logging-core" - 大小写敏感、不能带斜杠或后缀:
include "UserService"或include "user-service/"都会报错 - 禁用通配符:
include "modules/*"不被支持,必须逐个列出 - 建议显式声明根项目名:
rootProject.name = "my-erp",避免 IDE 或发布时识别混乱
根 build.gradle:只管“统一规矩”,不写具体依赖
它不负责业务逻辑,而是为所有子模块提供一致基础:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 用 subprojects 统一 Java 环境:
subprojects { java.toolchain.languageVersion = JavaLanguageVersion.of(17) } - 用 allprojects 配置仓库和插件:
allprojects { repositories { maven { url "https://maven.aliyun.com/repository/public" } } } - 不要在根项目的
dependencies块里写依赖——它对子模块无效 - 统一版本推荐用
libs.versions.toml(Gradle 8.2+ 官方推荐),而不是硬编码在 build.gradle 里
子模块 build.gradle:只做两件事——选插件、声明依赖
每个模块职责不同,配置要差异化:
- 公共模块(如
common、domain)只加依赖,不加 Spring Boot 插件:plugins { id "java-library" } - 服务模块(如
order-service)才启用 Spring Boot 插件:plugins { id "org.springframework.boot" version "3.3.0" apply false },再在子模块中apply plugin: "org.springframework.boot" - 模块间依赖用
implementation project(":common"),路径必须与settings.gradle中声明的一致 - 注意依赖作用域:
api表示对外暴露,implementation表示仅内部使用,避免传递污染
验证与构建:快速确认是否配置成功
配置完后,在根目录执行命令检查结构和依赖关系:
-
gradle projects:列出所有已注册模块及其层级 -
gradle :user-service:dependencies:查看某个模块的完整依赖树 -
gradle build:全量编译测试打包,Gradle 会自动按依赖顺序处理 - 只想构建一个模块及其所依赖的上游模块:
gradle :web:build
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










