介绍
模块化开发的主要优点包括:
-
模块化:每个模块可以独立开发和测试,减少耦合和依赖管理的复杂性。
-
复用:可以在多个项目中重用相同的模块。
-
依赖管理:模块间的依赖关系可以在一个地方集中管理,简化了依赖版本冲突的解决。
Gradle 也是支持模块化开发的,在一个大的文件夹下面建立多个子文件夹,通过 Gradle 配置让多个子文件夹成为大文件夹(项目)的子模块。一般,一个 Gradle 多模块项目的目录结构如下:
root
| - lib
| - src
| - main
| - java
| - resources
| - test
| - java
| - resources
| - app1
| - src
| - main
| - java
| - resources
| - test
| - java
| - resources
| - app2
| - src
| - main
| - java
| - resources
| - test
| - java
| - resources
创建模块化项目
-
首先在任意位置新建文件夹,名字叫做:
gradle-multi-modules
,在这个文件夹下面打开 CMD 窗口执行命令gradle init
然后一直按 Enter 直到运行结束。运行
init
这个 task 的目的是要生成 gradle 项目所需要的文件和目录:gradle、build.gradle、gradlew、gradlew.bat、settings.gradle。 -
接着新建三个文件夹,分别为:lib、app1、app2,并分别在这三个文件夹下新建
build.gradle
空文件。然后编辑
settings.gradle
文件,添加如下行:include ":lib" include ":app1" include ":app2"
这样,多模块项目就完成了。
多级嵌套甚至还可以这样:
include ":app:app1" include ":app:app2" include ":x:xx:xxx:xxxx" // 理论上,实际不建议太深
创建多模块项目,可以直接引入兄弟模块作为依赖,例如在此项目中,直接在 app1 和 app2 的 build.gradle 中,引入 lib 作为依赖:
dependencies {
implementation project(":lib")
}
统一管理依赖更是非常容易了,根项目的 build.gradle 中可以这样:
subprojects {
denpendencies {
// 以 spring-boot-starter 依赖的 bom 为例
implementation platform("org.springframework.boot:spring-boot-dependencies:2.7.18")
implementation("org.springframework.boot:spring-boot-starter-web") // 不再需要版本号
}
}
通过模块化开发的方式,提高了开发效率,可以使用统一的版本来去除冗余依赖,使依赖树变得整洁干净。