在企业项目中,一个复杂的项目往往分成几个小项目来协同完成,这就需要多项目的构建。而多项目的构建需要把一个大项目进行 项目模块化 ,通过模块的互相协作完成整个功能。
多项目构建模块划分和依赖关系
以一个点评网站(comment)来做模块的划分和关系的搭建,模块划分如下图所示:
core: 共用核心代码,包括业务层,数据访问层代码
model:模型,用来封装数据
admin:后台管理模块,包括视图和Controller
web:用户操作模块,包括视图和Controller
在之前使用Maven的多项目构建时,一般需要一个root项目来统一管理所有的模块。Gradle也是一样的,也是需要一个root项目来统一管理所有模块,关系图如下:
所有项目(包括root项目)的共用配置在allprojects中配置,所有子模块的公用配置可以在subprojects 中来配置,build.gradle针对项目的配置项都可以配置在allprojects/subprojects中。
演示内容:
- 所有项目都需要使用java插件,web项目也需要依赖Java环境
- web子项目需要打为war包
- 统一配置公共属性,如:group,version
- 统一管理资源库
- 通用依赖配置,如logback日志功能的引入
示例演示步骤
创建root项目和所有的子模块项目
-
创建Gradle的Java项目,ArtifactId: comment
-
在comment项目下创建core模块,ArtifactId:core
-
在comment项目下创建model模块,ArtifactId:model
具体的创建步骤跟core的相同,把对应的name换掉即可 -
在comment项目下创建admin模块,ArtifactId:admin
其他步骤跟上述步骤相同,只不过这个admin是个web项目,需要勾选web
-
在comment项目下创建web模块,ArtifactId:web
和admin创建相同在创建完所有的模块后,项目结构如下图所示:
因为root下的src用不到,所以将上图所选中的src文件夹删除,最终项目结构如下图所示:
我们看下setting.gradle文件:
根目录是comment,include 四个模块, 这样我们的项目就创建完成了。
配置gradle
配置依赖关系
以core依赖model为例
dependencies {
//core 依赖model子模块
compile project(":model")
testCompile group: 'junit', name: 'junit', version: '4.12'
}
同理admin&web依赖core既可
配置共用java插件引入
将comment项目下的build.gradle中,将java插件和版本引入配置转到allprojects中,因为root项目作为管理项目也需要加入java插件,所以此处不能使用subprojects
//配置统一的信息,包括root项目
allprojects {
//统一引入 java插件和版本指定
apply plugin: "java"
sourceCompatibility = 1.8
//统一配置公共属性,例如group,version
group 'top.zhexi'
version '1.0-SNAPSHOT'
}
删除所有子模块中的java插件引入和版本指定
build验证
配置公用资源库,配置完成以后可以看到每个模块下都有logback的依赖
//配置共用资源库
subprojects {
repositories {
mavenCentral()
}
dependencies {
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}
}