Gradle系列13-多项目构建

在企业项目中,一个复杂的项目往往分成几个小项目来协同完成,这就需要多项目的构建。而多项目的构建需要把一个大项目进行 项目模块化 ,通过模块的互相协作完成整个功能。

多项目构建模块划分和依赖关系

以一个点评网站(comment)来做模块的划分和关系的搭建,模块划分如下图所示:
在这里插入图片描述
core: 共用核心代码,包括业务层,数据访问层代码
model:模型,用来封装数据
admin:后台管理模块,包括视图和Controller
web:用户操作模块,包括视图和Controller

在之前使用Maven的多项目构建时,一般需要一个root项目来统一管理所有的模块。Gradle也是一样的,也是需要一个root项目来统一管理所有模块,关系图如下:
在这里插入图片描述
所有项目(包括root项目)的共用配置在allprojects中配置,所有子模块的公用配置可以在subprojects 中来配置,build.gradle针对项目的配置项都可以配置在allprojects/subprojects中。

演示内容:

  1. 所有项目都需要使用java插件,web项目也需要依赖Java环境
  2. web子项目需要打为war包
  3. 统一配置公共属性,如:group,version
  4. 统一管理资源库
  5. 通用依赖配置,如logback日志功能的引入

示例演示步骤

创建root项目和所有的子模块项目
  1. 创建Gradle的Java项目,ArtifactId: comment
    在这里插入图片描述
    在这里插入图片描述

  2. 在comment项目下创建core模块,ArtifactId:core
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 在comment项目下创建model模块,ArtifactId:model
    具体的创建步骤跟core的相同,把对应的name换掉即可

  4. 在comment项目下创建admin模块,ArtifactId:admin
    其他步骤跟上述步骤相同,只不过这个admin是个web项目,需要勾选web
    在这里插入图片描述

  5. 在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'
    }
}

发布了159 篇原创文章 · 获赞 22 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/ytuglt/article/details/105026287