第一模块:课程介绍
课程名称:新一代构建工具gradle
课程章节:4-6 多项目构建介绍
主讲老师:skyding
第二模块:课程内容
了解多模块项目的搭建
第三模块:课程收获
多项目构建
什么是项目模块化呢?
在企业项目中,包层次和类关系比较复杂,把代码拆分成模块通常是最佳实践,这需要你清晰的划分功能的边界,比如把业务逻辑和数据持久化拆分开来。项目符合高内聚低耦合时,模块化就变得很容易,这是一条非常好的软件开发实践
那么怎么开始呢。
先检测项目的依赖关系
我们按照MVC的模式来进行划分
首先是Model模块,这里面都是一些源数据。
Repository是用来存储数据的,那么它肯定是依赖Model这个模块,因为它使用到了源数据。
Web模块就是我们的页面。那么它肯定是依赖了另外两个模块就好了。然后按照依赖的传递性,因为Repository依赖了Model。那么Web只要依赖Repository就好了。
配置子项目
配置要求
- 所有的项目都用Java插件
- web子项目打包成war
- 所有的项目添加logback日志功能
- 统一配置公共属性
看下项目的依赖关系
那么开始实际配置
我们在项目中右键新建一个gradle项目
取名为model
同样的创建一个repository模块
那么现在目录是这么一个结构
那么现在就有个问题了。repository中的Main会报一个找不到TodoItem的错误。
那么在build中写入
implementation project(":model")
来引入model模块。
这个时候Main文件就不会报错了。
同样的,在settings.gradle文件中会显示出项目有哪些文件
rootProject.name = 'todo'
include 'model'
include 'repository'
在右侧的gradle菜单也会发生变化。
多来了两个模块
那么现在。我们的多模块项目的架子就好了。
接下来要完成几个任务
- 所有的项目都使用Java插件
每一个项目在创建的时候,都会有一个
plugins {
id 'java'
}
allprojects 中可以写任何build.gradle中能写的东西!
- 所有项目有日志打印
使用subprojects
来配置子项目的通用依赖和配置。
subprojects {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation('org.hibernate:hibernate-core:3.6.3.Final') {
// exclude group: "org.slf4j", module: "slf4j-api"
}
implementation "ch.qos.logback:logback-classic:1.2.11"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
}