当前位置: 首页 > 科技观察

使用Gradle构建多模块项目

时间:2023-03-15 22:45:47 科技观察

大家好,我是北君。今天和大家分享一下如何使用Gradle构建多模块项目。0.前言相对于Maven的XML配置方式,Gradle提供了一套简洁的构建Java项目的DSL,让我们可以像编写程序一样编写项目构建脚本。本文将从零开始创建一个使用Gradle构建的多模块SpringBoot项目,JDK版本为8,IDEA版本为2022.3.1。1.创建工程打开IDEA,选择菜单:File->New->Project,在其中找到SpringInitializr,新建一个demo工程。创建成功后结构如下:之后程序会自动下载Gradle安装包,通过Gradle下载并导入jar包。由于默认使用的镜像速度比较慢,我们可以先取消下载,后面配置国内镜像后再重新下载。当然,我们也可以慢慢等。2、Gradle描述这里不介绍Gradle的优缺点,只说一下本项目涉及的部分:build.gradle:管理依赖包的配置文件(相当于Maven的pom.xml)。gradlew:Gradle命令的包装器。当机器上没有安装Gradle时,可以直接使用gradlew命令来构建项目。settings.gradle:可以看作是多模块项目的总目录,Gradle通过它来构建各个模块,组织模块之间的关系。gradle/wrapperpackage:对Gradle的一层封装,可以让机器在不安装Gradle的情况下运行程序,方便团队开发过程中统一Gradle构建的版本。推荐使用。gradle.properties:需要手动创建,配置gradle环境变量,或者配置自定义变量供build.gradle使用。3.GradleBestPractices接下来说说我个人使用Gradle的一些心得。修改gradle-wrapper.properties中的Gradle下载镜像为国内镜像。新建gradle.properties文件,配置Gradle参数,提高构建速度。将maven仓库地址改成国内地址,将经常变化的依赖包版本、maven库地址等变量提取到gradle.properties中,build.gradle可以直接读取使用。使用buildscript引用gradleplugins的好处是可以使用自定义仓库,方便子模块继承。新建一个spring.gradle配置文件,引用相关的Spring依赖包。在build.gradle中添加引用本地jar包的语句。这样配置之后,仓库里没有的jar包直接放在src/libs文件夹下就可以使用了,非常方便。在build.gradle中添加任务复制jar包,build或bootJar后执行,将子模块打包复制到根目录。四、项目模块划分4.1.拆分思路新建项目默认是单模块的SpringBoot项目,我们想改造为多模块项目。思路是将项目拆分成多个子模块,分为三类:服务、模块、组件:service:对应一个可启动的SpringBoot项目,一般只有一个启动类,建议根据服务器资源和团队规模划分,模块为一对多关系,位置在services包下;module:对应一个完整的业务,模块之间边界清晰,解耦不同服务,便于扩展和维护,位置在modules包下;component:把公共代码部分抽取出来放到组件中,由不同的模块调用。与modules是多对多的关系,位置在components包下。4.2.拆分练习服务:创建一个示例服务:demo-boot模块:只是一个框架,不承载业务,象征性的搭建一个系统管理模块:demo-system,任何系统都可以使用;component:构建一个类似Put工具的components:demo-common,所有模块都会用到。4.3.具体配置声明子模块:在根目录下的settings.gradle中声明各个模块:servicepublicdependencies:引用services/build.gradle中所有服务公用的一些依赖包,这里使用的是subprojects,意思是应用于所有子模块在services包下,我们将根目录src下的文件通过sourceSet作为公共代码集成到各个服务中。服务包含模块:引用services/demo-boot/build.gradle中的模块demo-system模块通用依赖:引用modules/build.gradle中所有模块通用的一些依赖包,这里我们引用本地的src/libs文件夹本地jar包下。该模块包含组件:引用modules/demo-system/build.gradle中的组件demo-common4.4。每次修改代码结构,需要刷新Gradle配置才能生效(可以改成自动)