如何使用Gradle构建一个多模块项目?

Gradle构建多模块spring boot项目 按创建springboot项目的创建方式创建就行,创建完的结构。然后删除src目录。 阅读详情

哈喽,大家好,今天和大家分享一下使用 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 的优缺点了,只说一下本项目涉及的部分:

  • build.gradle:管理依赖包的配置文件(相当于Maven的pom.xml)。

  • gradlew:Gradle 命令的包装,当机器上没有安装 Gradle 时,可以直接用 gradlew 命令来构建项目。

  • settings.gradle:可以视为多模块项目的总目录, Gradle 通过它来构建各个模块,并组织模块间的关系。

  • gradle/wrapper包:Gradle 的一层包装,能够让机器在不安装 Gradle 的情况下运行程序,便于在团队开发过程中统一 Gradle 构建的版本,推荐使用。

  • gradle.properties:需手动创建,配置gradle环境变量,或配置自定义变量供 build.gradle 使用。

3. Gradle最佳实践

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

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

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

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

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

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

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

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

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

4. 项目模块划分

4.1. 拆分思路

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

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

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

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

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

4.2. 拆分实践

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

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

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

4.3. 具体配置

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

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

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

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

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

4.4. 代码结构

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

构建之美:精通Gradle多模块项目的配置艺术 通过本文的详细步骤和代码示例,你应该能够掌握如何在Gradle中配置和管理多模块项目。Gradle的灵活性和强大功能使得构建多模块项目变得简单而高效。多模块项目是大型软件开发的常见模式,而Gradle提供了一种优雅的方式来配置和管理这类项目。希望本文能够帮助你在项目构建中游刃有余,无论是构建大型企业级应用还是小型项目,都能发挥Gradle的强大能力。注意:本文中的代码示例为简化模型,实际应用中应根据具体需求和项目标准进行选择和实现。 阅读详情

相关推荐

利用Gradle构建Java多模块项目

    Java新手,准备写个项目来巩固下知识点,在新建项目时不知道选择用什么作为构建工具,Maven肯定用过,只限于使用过,没有系统的去学习。之前做Android开发时用过Gradle来构建项目,也没深入研究过。后来在公司接触过用Gradle构建的java项目,才去深入了解过,描述的是Gradle是作为下一代构建工具,很灵活。我个人觉得这个灵活是体现在配置上,我看了很多使用Gradle构建多模块...

城南孔乙己的专栏 6812

01 | 使用Gradle构建多模块项目

从无到有的搭建一套基于 SpringBoot 的开发脚手架,其中包含很多实用的技术和技巧,希望能和大家共同进步。

gotanksgn的博客 4942

Gradle多模块项目搭建完整教程,模块互相依赖,基于springboot开发

1.在study项目src>>main>>java目录下新建配置类DefultConfig.java,@ComponentScan选择所有要扫描注入的包。3.在META-INF文件夹下新建spring.factories文件,填写步骤一中的配置类全限定名。:该代码块中的配置将适用于所有项目,包括根项目和所有子项目。2.在study项目src>>main>>resources目录下新建META-INF文件夹。该代码块中的配置将只应用于子项目,而不包括根项目。建立父子关系(很关键)

十三月的博客 5257

Gradle构建多模块项目

Gradle未来的趋势

startqbb的博客 1949

MTK手机传感器驱动开发避坑指南:从SCP代码大小限制到Overlay加载流程详解

本文详细解析了MTK平台传感器驱动开发中的常见问题,包括SCP代码大小限制、Overlay加载流程及客制化传感器集成。通过实战案例和优化策略,帮助开发者高效解决MTK传感器驱动开发中的技术难题,提升开发效率。

weixin_42522374的博客 402

【GNSS/Linux】BKG Ntrip Client (BNC) 的编译与安装

【GNSS/Linux】BKG Ntrip Client (BNC) 的编译与安装 1. BNC软件 1.1 软件介绍 The BKG Ntrip Client (BNC) is an Open Source multi-stream client program designed for a variety of real-time GNSS applications. It was primarily designed for receiving data streams from any Ntrip

小马甲的新马甲 7809

IDEA + gradle构建多模块的web项目

IDEA + gradle构建多模块的web项目安装gradleJAVA环境(都会的事情就不写了)idea创建多模块工程(以下多图)配置idea中的gradle新建根工程新增web子模块配置gradle配置根工程的build.gradle配置根工程的settings.gradle配置web模块的build.gradle刷新gradle编译CLASS文件启动服务问题记录1. gradle刷新时间长 现在的项目工程几乎都是多模块的,也就是一个根工程目录下按照系统的功能或者职责划分成不同的子工程,然后子工程之间通

技术螃蟹的博客 1739

【达梦8】多实例监视集群的部署测试

确认监视器具有状态确认和自动接管两个功能。在数据守护系统的故障自动切换模式下,必须部署一个确认监视器,否则在出现数据库故障时,会导致数据库服务中断。DM 提供了两种确认监视器的配置形式,分别为单实例和多实例。但是当单实例确认监视器故障时,无法继续进行集群的故障自动接管和备库故障确认,影响正常使用,故提供了多实例确认监控器来进一步提高集群的高可用性。在多实例确认监视器中,只有一个实例作为确认监视器提供服务,其它实例作为备库存在而不提供服务。

weixin_45335507的博客 1675

gradle 不支持多级子模块_Gradle构建多模块项目

通常我在使用Maven构建项目的时候是将应用项目划分为多个更小的模块。Gradle 项目也拥有多于一个组件,我们也将其称之为多项目构建(multi-project build)。我们首先创建一个多项目构建:mkdir cmdGradleProj &&cdcmdGradleProjgradle init这时候D:\cmdGradleProj>目录下执行:tree /f的项目结构...

weixin_39681486的博客 865

RAGFlow系列(06):从0.20.0版本升级到最新版的完整指南

本文提供了从RAGFlow 0.20.0版本升级到最新版的完整指南。升级前务必进行数据、配置和状态的三层备份,尤其是智能体配置因版本间存在不兼容风险。指南详细说明了如何优雅停止服务、拉取新代码、检查并调整配置文件(如端口、环境变量),以及最终部署验证的步骤,确保升级过程平滑安全。

weixin_29243279的博客 465

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 616

使用IDEA搭建gradle+SpringBoot多模块项目

当项目比较大,设计的业务比较多的时候,我们就会想到将项目进行拆分,类似于分布式。这样在更改某个模块时可以在不影响其它模块下更快的进行部署,方便开发/运维人员以下是在windows平台下使用IDEA开发工具,gradle构建工具,SpringBoot来进行多模块项目简单搭建的步骤。选择一个目录在该目录下新建 BingoProject ,打开cmd,输入gradle init 完成根目录的搭建使用wi...

xybclndcn的博客 8120

前端build工程的时候 出现 `build.rollupOptions.external 的解决方法

看到这个Bug,理性分析: 遇到 Rollup failed to resolve import “@vue/devtools-api” 错误可能是由于 Pinia 使用了 @vue/devtools-api 模块,而 Vite 的 Rollup 插件无法解析这个模块 ps:但是我前一秒还可以,加了个别代码,突然不行,我是不相信的 = - =

码农研究僧的博客 3056

ant构建项目迁移到gradle_Gradle: 构建SpringBoot多模块项目实例

目录准备工作项目结构构建步骤发布部署附言1. 准备工作安装Gradle安装JDK安装git for windows说明:由于本人在unix系统下工作,所以如果你是windows系统,需要安装git for windows,然后使用git bash执行命令,安装工作如果遇到困难,你可以请参考官网指导2. 项目结构3. 构建步骤3.1. 创建项目 创建项目文件夹 jc-gradle-multiple-...

weixin_39610759的博客 238

出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法

Nacos中的 2.x执行步骤如上,如果需要安装下载1.x版本,执行该步骤之后 自动更新下载的是2.x版本 对此如果需要下载安装1.x的版本,可通过如下连接(windows版本)

码农研究僧的博客 5700

【WorkBuddy专栏50】代码开发技术体系深度分析——前端、后端、全栈、移动端、数据工程,WB和CODEBUDDY谁更擅长?

【WorkBuddy专栏50】代码开发技术体系深度分析——前端、后端、全栈、移动端、数据工程,WB和CODEBUDDY谁更擅长?

AI人人懂 241

gradle引入子module配置_Gradle构建多模块项目

1:创建项目首先创建项目mkdir spring-cloudcd spring-cloudgradle init然后创建多模块mkdir -p spring-cloud-server/src/main/javamkdir -p spring-cloud-server/src/test/javamkdir -p spring-cloud-client/src/main/javamkdir -p sp...

weixin_35683330的博客 3087

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA中使用springBoot+gradle构建多模块项目

最近项目中用到了springboot+gradle来构建多模块项目,写这篇文章纯当作笔记吧,同时也分享给大家。 gradle和maven是目前很便捷的两款项目构建工具,都有各自的优势。据官方统计,gradle比maven构建项目时快100倍以上。废话不多说,下面介绍一下如何使用gradle创建多模块化工程。 1.创建项目 首先创建项目,名称为 myGradleProject,创建命令如下

forMelo的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringBoot + Gradle 多模块项目 构建、运行、打包

工具: IDEA一、在IDEA中使用工具创建SpringBoot + Gradle的父工程       new -> project -> Spring Initializr  -> type选项选中Gradle Project(其他视情况填写)       父工程 : demo-springboot-gradle二、在父工程下新建两个模块 web、dao       右键单击父...

zekeTao的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Gradle笔记整理三】构建多模块项目

allprojects 块 的 repositories 用于多项目构建,为所有项目提供共同所需依赖包。

小异常的博客 1189

gradle构建多模块(父子项目)项目

一、新建父工程 使用idea新建一个gradle工程。 二、删除父工程src文件夹 三、创建子工程 创建完成后效果如下 四、修改父工程gradle配置文件 将原始文件内容修改为 //配置所有项目公共内容 allprojects { //指定需要的插件 //指定语言 apply plugin: 'java' //指定编辑器 apply plugin: 'idea' //配置项目信息 group 'org.example' versi

a1103313049的博客 1万+

gradle管理springBoot多模块打包

项目结构如图所示: 这个里六个模块。run启动模块,也是需要打成jar包启动的.依赖顺序是run->server->agreement->handler->command.由于client是我用来连接测试,暂不讨论。除了run模块之外其他模块只有一句话,引入其他模块,如server中: dependencies { compile project(":xia-agreement") } 引入其他模块。由于compile具有依赖传递性,就是说如果A依赖B,B又依赖C(A-&

aTim博客 2874

Gradle多模块的项目构建

示例程序拥有两个模块:      core模块包含一些通用的组件,它们能够被程序的其他模块使用。例子中,只包含一个类:MessageService类返回‘Hello World!’字符串。该模块有两个依赖:Junit 4.11与commons-lang3。      app模块包含HelloWorld类,是程序的开端,它从MessageService对象中获取信息,并将接收到的信息写入一个日志

ZERO 9286

IDEA+Gradle+Springboot2.1.5 搭建多模块项目

学习:https://www.jianshu.com/p/439a8b6a7617 一,进入新建项目窗口,选择 Spring Initializr ,这是spring官方提供的构建springboot demo的网站 https://start.spring.io,也可直接在此网站上初始化项目后,下载后在导入idea。 二,在Group处填入组织,在Artifact处填入项目名称,然后在type下拉框中选择第三个gradle构建,完成后点击next 三,此时我们先创建一个跟项目,在..

b13001216978的博客 880

快速构建Springboot gradle多模块项目

文章目录1、创建根项目2、创建子项目3、删除没用的文件4、配置子项目关联4.1 根项目settings.gradle配置4.2 根目录build.gradle配置5、构建一下就好了 1、创建根项目 File ==> new project ==> Spring Initializr ==> next =>next (使用idea常规操作,创建一个spring boot项目。在创建过程设置好自己的项目保存路径) 删除src文件夹 2、创建子项目 本次教程创建两个 选

t18092838767的博客 516

gradle构建多模块项目_Gradle入门:创建多项目构建

gradle构建多模块项目 尽管我们可以仅使用一个模块来创建一个运行中的应用程序,但有时将我们的应用程序划分为多个较小的模块是比较明智​​的。 因为这是一个相当普遍的用例,所以每个自重的构建工具都必须支持它,Gradle也不例外。 如果Gradle项目具有多个模块,则称为多项目构建。 这篇博客文章描述了如何使用Gradle创建多项目构建。 让我们开始看看Gradle构建的需求。 ...

最佳 Java 编程 726
上一篇: 15个高并发系统设计锦囊,建立并发思维!
下一篇: 微服务又被泼“过去十年最大的架构错误”冷水了!
Java_LingFeng
博客等级 码龄4年 505粉丝 259原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值