Gradle构建多模块项目 (工程拆分与聚合)

Gradle构建多模块项目(工程拆分与聚合)

  1. 首先创建一个Gradle项目的父工程项目
    请添加图片描述

  2. 删除父工程的src目录

请添加图片描述

  1. 根据指定的父工程 , 来创建一个子工程 , 右键父工程

请添加图片描述

  1. 创建完子工程后 ,
  • 在父工程的setting.gradle文件中 , 就会自动生成如下配置
rootProject.name = 'Gradle_demo'
<!-- 表示该父工程中的所有的子工程的工程名称 -->
include 'gradle_dao'
include 'gradle_server'

  1. 工程创建成功 , 修改父工程的配置文件(build.gradle) , 让子模块共享父模块的配置
// 配置所有项目公共的内容 (以下是我的配置 , 仅供参考)
// 注意 : 只有 allprojects 代码块包裹的配置信息 , 才是父子工程共享的配置信息
allprojects {
    // 指定需要的插件
    // 指定语言
    apply plugin: 'java'
    //指定编辑器
    apply plugin: 'idea'
    // 配置项目信息
    group 'fit.hrkj'
    version '1.0-SNAPSHOT'

    // 配置仓库
    repositories {
        mavenLocal()
        mavenCentral()
    }
}

// 配置子工程
subprojects {
    // 指定编译版本
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    // 配置字符编码
    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }

    // 配置全局依赖版本信息
    ext {
        junitVersion = '4.12'
    }

    //配置子模块依赖
    dependencies {
        testCompile group: 'junit', name: 'junit', version:"${junitVersion}"
    }
}

如果配置了父模块与子模块 , 那么所有的子模块都可以共享一个父模块的配置 , 举个例子 , 如果在父模块里面加入了mysql的依赖 , 那么所有的子模块 , 不需要配置 , 也都默认加入的mysql的依赖

  1. 父工程与子工程都创建好了 , 一个dao工程 , 一个service工程 , 那么 , 如果我想在service工程里面使用dao工程里面的代码 , 该怎么使用呢 , 像这种跨模块之间的调用 , 该怎么办呢 , 如果是Spring Cloud 的话 , 我们想到的肯定是 OpenFeign 远程调用 , 但是在Gradle里面 , 不需要使用远程调用 , 就可以调用其他服务的代码 , 就像调用自己的服务代码一样那么随便 。

同模块之间调用教程

  • 编辑gradle_service工程的 build.gradle配置文件
// 因为父工程都配置过了这些信息 , 
// 所以子工程 , 没必要再重新配置一遍 , 所以我的都删除掉了 , 
// 只留下了项目的打包方式
plugins {
    id 'war'
}
dependencies {
    // 添加子模块  , 通过这样的方式 ,我们在service模块里面 , 就可以调用dao模块里面的方法了
    compile project(":gradle_dao")
     ...  //以下可以配置很多服务
}
    

加入了这行配置后 , gradle_service 服务调用 gradle_dao服务的方法 , , 就可以随意调了 , 就像调用自己服务的一样 , 同理 , gradle_dao 服务调用 gradle_service 服务的方法 , 我们只需要修改gradle_dao服务的配置文件 , 就可以了

案例
  1. 我们在gradle_dao模块中 , 创建一个dao层的接口 , 以及对应的实现类
package fit.hrkj.dao;

/**
 * @date 2021-05-11 10:27
 */
public interface TestDao {
    String getTestDao();
}

package fit.hrkj.dao.Impl;

import fit.hrkj.dao.TestDao;

/**
 * @date 2021-05-11 10:28
 */
public class TestDaoImpl implements TestDao {
    @Override
    public String getTestDao() {
        return "Hello Gradle";
    }
}

  1. 我们在gradle_service服务里面来使用这个方法
package fit.hrkj.service;

<!-- 导入gradle_dao层里面的类 ,  -->
import fit.hrkj.dao.Impl.TestDaoImpl;
import fit.hrkj.dao.TestDao;
/**
 * gradle_service模块
 * @date 2021-05-11 10:27
 */
public class TestService {
    
    public static void main(String[] args) {
        
        TestDao testDao=new TestDaoImpl();
        
        System.out.println(testDao.getTestDao());
        
    }
}

  1. 执行项目 , 看看效果
    请添加图片描述
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢乐少年1904

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值