微服务: 多 Module 管理工程
简介
在 微服务-想办法让项目运行起来 这篇文章中,介绍了如何使用 IDEA
开发工具搭建本地的微服务开发环境,通常我们会把一个微服务项目分解成多个服务,那么为了更好的管理该项目,大家一般都会在 IDE 里面通过多 Module
来进行管理。这里的多 Module
可以理解为多个 SpringBoot
项目。
近期收到一些小伙伴的反馈,在使用 IDEA
搭建多 Module
的时候总会遇到一些莫名其妙的问题,甚是让人烦恼。趁此机会给大家介绍一下。
下面的实践,使用的是 IntelliJ IDEA 2020.2
版本,2019.x
版本也是同样的创建方法。
说干就干
一些在你看来并不起眼的工作,对于别人来说可能是难以逾越的鸿沟。
不废话,直接实践开干!
1、打开 IDEA,File/New Project
选择 Spring Initializr
,工程类型选择 Maven。
在接下来的步骤中,不需要选择任何依赖。填写完成后,点击 Finish
即可。
删除工程的 src
、.mvn
、mvnw
、mvnw.cmd
这几个目录。
删除后,工程目录如下
修改 pom.xml
文件,增加如下内容:
1 | <packaging>pom</packaging> |
在 Maven
项目中,packaging
给出了项目的打包类型,即作为项目的发布形式,其可能的类型。
1 | <!-- 继承说明:这里继承SpringBoot提供的父工程 --> |
在 Maven 3
中,其可用的打包类型如下:
- jar,默认类型
- war
- ejb
- ear
- rar
- par
- pom
- maven-plugin
如下图所示:
2、创建 Module
在工程名称上面右键新建 module
,如下图
这里以创建 SpringBoot Module 为例,使用 Spring Initializr
创建 Module
按照你自己的需求填写对应的信息即可进入到下一步直至 Finish
.
此时,修改该 module 的 pom 文件,如下(将从工程继承而不是从spring boot继承)所示:
1 | <parent> |
同理,再新建一个 mz-payment-inone
的 Module
,最后工程目录如下:
同理, mz-payment-inone
建立好之后也修改一下它的 pom 文件中的 <parent>
标签内容。
所有的 module 建立完成之后,在 工程的 pom 中增加 module 的说明即增加 <module>
标签 ,如下:
1 | <!-- 模块说明:这里声明多个子模块 --> |
至此,工程中多 Module
已经创建完成👏,接下来再给大家介绍一下 Module
之间如何相互调用。
Module 之间的调用
按照上面的方法,我再次创建了一个 mz-core
的 Module
,该 Module
为 上面两个 SpringBoot Module 提供基础的方法。
在 mz-core
中增加了一个 MZDateUtil
类和对应的方法
在 mz-login-inone
中使用该类的方法。
为 mz-login-inone
添加依赖 ms-core
,如图
在 mz-login-inone
的 pom.xml
文件中添加如下代码
编写 API
进行测试,在 mz-login-inone
的 MZLoginInoneController
中增加如下代码
1 |
|
运行 mz-login-inone
,在浏览器访问该接口,显示如下:
如果你在使用过程中还有遇到奇葩的问题,欢迎留言评论,感谢阅读!
詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java 编程语言的共同创始人之一,一般公认他为“Java之父”。