文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Gradle构建多模块项目

2024-11-30 23:46

关注

今天和大家分享一下使用 Gradle 构建多模块项目。

0. 前言

相比起 Maven 的 XML 配置方式,Gradle 提供了一套简明的 DSL 用于构建Java 项目,使我们就像编写程序一样编写项目构建脚本。

本文将从无到有创建一个用 Gradle 构建的多模块 Spring Boot 项目,JDK 版本为8,IDEA 版本为 2022.3.1 。

1. 创建项目

打开IDEA,选择菜单:File -> New -> Project,在其中找到 Spring Initializr,创建一个全新的 demo 项目,创建成功后结构如下:

之后,程序会自动下载 Gradle 安装包,并且通过 Gradle 下载和引入的 jar 包。由于默认使用的镜像速度较慢,我们可以先取消下载,等后面配置好国内镜像后再重新下载,当然也可以慢慢等。

2. Gradle说明

在这里就不介绍Gradle 的优缺点了,只说一下本项目涉及的部分:

3. Gradle最佳实践

接下来,讲一下我个人使用 Gradle 的一些经验。

修改 gradle-wrapper.properties 中的 Gradle 下载镜像改为国内镜像。

新建 gradle.properties 文件,配置 Gradle 参数,提升构建速度。

将 maven 仓库地址改为国内地址

将经常变更的依赖包版本、 maven 库地址等变量提取到 gradle.properties 里, build.gradle 可直接读取使用。

使用 buildscript 方式引用 gradle plugins ,优点是可以使用自定义仓库,且便于子模块继承。

新建 spring.gradle 配置文件,引用相关的 Spring 依赖包。

在 build.gradle 里添加引用本地jar包的语句,这样配置后,仓库中没有的jar包,放到 src/libs 文件夹下就可以直接使用了,非常方便。

在 build.gradle 中添加一个拷贝 jar 包的 task ,在 build 或 bootJar 后执行,用于将子模块打包后,拷贝到根目录下。

4. 项目模块划分

4.1. 拆分思路

新项目默认是一个单模块的 SpringBoot 工程,而我们要将其改造为一个多模块项目,思路是,将项目拆分为多个子模块,分为三类:服务、模块、组件:

项目:最顶级,与服务是一对多的关系,本项目为根目录;

服务:对应一个可启动的 SpringBoot 工程,一般只有一个启动类,建议根据服务器资源和团队规模划分,与模块是一对多的关系,位置在 services 包下;

模块:对应一个完整的业务,模块间边界清晰,将不同的业务解耦,便于扩展和维护,位置在 modules 包下;

组件:将公用的代码部分提取为一个个组件,供不同的模块调用,与模块是多对多的关系,位置在 components 包下。​

4.2. 拆分实践

服务:创建一个示例服务:demo-boot

模块:只是个框架,没有承载业务,象征性的建一个系统管理模块:demo-system ,任何系统都能用到;

组件:建一个放工具类的组件:demo-common ,所有模块都会用到。

4.3. 具体配置

声明子模块:在根目录下的 settings.gradle 里声明各个模块:

服务公共依赖:在 services/build.gradle 里引用一些所有服务公用的一些依赖包,这里使用了 subprojects,表示应用于所有 services 包下的子模块,我们通过 sourceSet 的方式将根目录 src 下的文件,作为公共代码集成到每个服务中。

服务包含模块:在 services/demo-boot/build.gradle 里引用模块 demo-system

模块公共依赖:在 modules/build.gradle 里引用一些所有模块公用的一些依赖包,这里我们引用本地 src/libs 文件夹下的本地jar包。

模块包含组件:在 modules/demo-system/build.gradle 里引用组件 demo-common

4.4. 代码结构

每次修改 Gradle 配置后,需要刷新生效(可改为自动)

来源:Java技术指北内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯