Gradle多模块之父子模块

目录

  • 一:新建一个gradle工程
  • 二:修改工程
  • 三:新建子模块
  • 四:修改父模块setting.gradle
  • 五:修改gradle插件
  • 六:测试

利用gradle进行多模块架构,用于代码解耦

一:新建一个gradle工程

  1. 以springboot为例
    Gradle多模块之父子模块_第1张图片
  2. 选择gradle project
    Gradle多模块之父子模块_第2张图片
  3. 可以什么都不选
    Gradle多模块之父子模块_第3张图片
  4. 选择本地gradle
    Gradle多模块之父子模块_第4张图片

二:修改工程

  1. 删除src文件
  2. 修改build.gradle文件
    /*
        buildscript代码块中的声明是gradle脚本自身需要的资源。
        可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
        gradle在执行脚本时,会优先执行buildscript代码块中的内容,然后才会执行剩余的build脚本。
    */
    buildscript {
        ext {
            springBootVersion = '2.1.4.RELEASE'
        }
        repositories {
            mavenCentral()
        }
        dependencies {
            /* 添加插件依赖路径(通过jar方式) */
            classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}" as Object)
        }
    }
    
    /* 所有子项目的通用配置 */
    subprojects {
        /* 使用二进制插件 */
        apply plugin: 'java' /* java是Gradle的核心插件,是内置的,内置插件不需要配置依赖路径 */
        apply plugin: 'idea' /* 同上  让Gradle自动生成Intellij的项目文件*/
        /* 注意gradle插件不再自动应用,所以这里需要指定 */
        apply plugin: 'org.springframework.boot'
        /* 依赖管理插件仍然是一个spring-boot-gradle-plugin传递依赖,所以无需在build.gradle配置中明确列出此依赖。 */
        apply plugin: 'io.spring.dependency-management' /* 依赖管理,用来传递spring的依赖 */
    
        group = 'com.pay'
        version = '0.0.1' /* 项目版本 */
        /* 指定jdk版本 */
        sourceCompatibility = '1.8'
        /* java编译的时候缺省状态下会因为中文字符而失败 */
        [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
    
        repositories {
            mavenLocal()
            maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
            mavenCentral()
        }
    
        /* 添加通用依赖 */
        dependencies {	   
            implementation 'org.springframework.boot:spring-boot-starter-web'
            testImplementation 'org.springframework.boot:spring-boot-starter-test'
        }
    }
    

三:新建子模块

  1. 创建
    Gradle多模块之父子模块_第5张图片
    创建方式和上面的创建工程的方式一样
  2. 删除文件(除src和build.gradle)
    Gradle多模块之父子模块_第6张图片
  3. 修改build.gradle
    
    /* 子模块项目名,jar名 */
    archivesBaseName = 'demo-two'
    
    
    jar.enabled = true
    /* 需要org.springframework.boot插件 不需要打包成可执行的jar*/
    bootJar.enabled = false
    
  4. 由于这个模块只提供公共的utils,log,等,所以不需要启动类
    Gradle多模块之父子模块_第7张图片
  5. 在创建一个模块,创建方式同上,依赖于上一个子模块
    build.gradle
    
    archivesBaseName = 'demo-three'
    
    jar.enabled = true
    bootJar.enabled = true
    
    
    dependencies {
        implementation project(':demo-two') /* 子模块之间的依赖 */
    }
    

四:修改父模块setting.gradle

/* 多模块构建 */
/* 父模块名称 */
rootProject.name = 'demo-one'
/* 引入子模块 */
include 'demo-two','demo-three'

五:修改gradle插件

Gradle多模块之父子模块_第8张图片
删除demo-two,demo-three
Gradle多模块之父子模块_第9张图片
展开demo-one里面由子模块的gradel插件,可统一执行脚本,如打包、

六:测试

Gradle多模块之父子模块_第10张图片
启动项目
在这里插入图片描述
测试成功

demo地址

你可能感兴趣的:(gradle)