哈喽,大家好,我是指北君。
今天和大家分享一下使用 Gradle 构建多模块项目。
相比起 Maven 的 XML 配置方式,Gradle 提供了一套简明的 DSL 用于构建Java 项目,使我们就像编写程序一样编写项目构建脚本。
本文将从无到有创建一个用 Gradle 构建的多模块 Spring Boot 项目,JDK 版本为8,IDEA 版本为 2022.3.1 。
打开IDEA,选择菜单:File -> New -> Project,在其中找到 Spring Initializr,创建一个全新的 demo 项目,创建成功后结构如下:
之后,程序会自动下载 Gradle 安装包,并且通过 Gradle 下载和引入的 jar 包。由于默认使用的镜像速度较慢,我们可以先取消下载,等后面配置好国内镜像后再重新下载,当然也可以慢慢等。
在这里就不介绍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 后执行,用于将子模块打包后,拷贝到根目录下。
新项目默认是一个单模块的 SpringBoot 工程,而我们要将其改造为一个多模块项目,思路是,将项目拆分为多个子模块,分为三类:服务、模块、组件:
项目:最顶级,与服务是一对多的关系,本项目为根目录;
服务:对应一个可启动的 SpringBoot 工程,一般只有一个启动类,建议根据服务器资源和团队规模划分,与模块是一对多的关系,位置在 services 包下;
模块:对应一个完整的业务,模块间边界清晰,将不同的业务解耦,便于扩展和维护,位置在 modules 包下;
组件:将公用的代码部分提取为一个个组件,供不同的模块调用,与模块是多对多的关系,位置在 components 包下。
服务:创建一个示例服务:demo-boot
模块:只是个框架,没有承载业务,象征性的建一个系统管理模块:demo-system ,任何系统都能用到;
组件:建一个放工具类的组件:demo-common ,所有模块都会用到。
声明子模块:在根目录下的 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
每次修改 Gradle 配置后,需要刷新生效(可改为自动)
本文题目:使用Gradle构建多模块项目
网站地址:http://www.shufengxianlan.com/qtweb/news2/328552.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联