![138e71976add961a26a26862c43c31fe.png](https://i-blog.csdnimg.cn/blog_migrate/e6fcc3b5f0da2cfa4ab9a3b44da54f56.jpeg)
当我们步入到SpringBoot的世界后,我们的程序就可能由一个个微服务组成,面对着大量的服务,我们如何进行管理呢?
我最近几年一直使用IDEA作为开发工具,使用IDEA开发多服务组成的软件,我经历了三个阶段:
第一阶段:每个服务,建立一个项目;
这种方式的优点是服务之间很独立,缺点是每次切换服务,都很费时,而且在服务之间查看代码不方便。
第二阶段:所有的服务属于一个项目,项目下建立模块,每个服务对应一个IDEA模块;
和第一阶段的方式相比,这种方式的优点是服务之间查看代码比较容易。
第三阶段:在IDEA环境下,使用Maven的方式管理所有服务,所有服务属于一个项目,服务之间的关系构成树形结构,就像Windows或Linux的目录结构一样。
这个阶段,所有的服务一目了然,而且还能利用Maven的能力自动打包,感觉非常清爽!
![a03a02a003003867aa30079737da6ced.png](https://i-blog.csdnimg.cn/blog_migrate/6da336d476bd3d34552e80983637db80.jpeg)
下面,我用一个例子来讲解如何实现第三阶段的服务管理方式。
假如我们要开发一个电商平台,平台由前端(包含APP接入器、浏览器接入器、业务管理系统三个服务)、中间层(包含消息队列、事务处理器、业务驱动器三个服务)、后端(包含数据中心、规则引擎两个服务)三部分组成:
![d0e95d32101ae824c990d55e72824dc8.png](https://i-blog.csdnimg.cn/blog_migrate/94aa10bc398951574feb2ac15160f29e.jpeg)
这是详细步骤:
第1步:打开IDEA,点击“Create New Project”:
![a5993954e6ded413d4402d92bde5eba4.png](https://i-blog.csdnimg.cn/blog_migrate/e2bf2f21321581fb8a324d851b872f72.jpeg)
第2步:选择Maven,然后点击Next:
![3ad9f144977fb3c65393425c99d16233.png](https://i-blog.csdnimg.cn/blog_migrate/672fc7244e8d245c649661548ff25c75.jpeg)
第3步:GroupId输入com.flying,ArtifactId输入ec-platform,然后点击Next:
![c3592a7b1f6dc7e02854f34027575590.png](https://i-blog.csdnimg.cn/blog_migrate/c041f88d62244d30bdca738ec0e53187.jpeg)
第4步:Project Name输入ec-platform,然后点击Finish按钮:
![9ed3606bf0060c52acab0a80a9d2494c.png](https://i-blog.csdnimg.cn/blog_migrate/f770410317ae5cb8e5047ed3cd8a48d5.jpeg)
第5步:在ec-platform树节点选择 “New | Module” 菜单项:
![d18ccc39ea41df840c01646a98c773f3.png](https://i-blog.csdnimg.cn/blog_migrate/d94d1d44c8cd297c9b22eacd6f64ea57.jpeg)
第6步:选择Maven,然后点击Next按钮:
![028428edddcb0fe8a758ebc3a3577827.png](https://i-blog.csdnimg.cn/blog_migrate/3baf384b572248954eb08986ca26acd5.jpeg)
第7步:ArtifactId输入front-end,然后点击Next按钮:
![e2a24d818173ed9af2ea713bca91b570.png](https://i-blog.csdnimg.cn/blog_migrate/afeb9d191fd0ad97414eb0e35e7c259a.jpeg)
第8步:Module Name输入front-end,然后点击Finish按钮:
![4d23709898e7493442a7491307d8af76.png](https://i-blog.csdnimg.cn/blog_migrate/623aba6965dda07cf4d6f84989851d69.jpeg)
第9步:重复第6-8步,分别建立mid-layer和back-end模块。完成本步骤后界面如下:
![bb83d0e7c0fc2880e8c09f8b37dad6aa.png](https://i-blog.csdnimg.cn/blog_migrate/80fad0f8dcfb4e237a323d0c886d42e8.jpeg)
第10步:选择front-end节点的右键菜单项“New | Module”:
![a6163b73d318671aa6132a352390b6f4.png](https://i-blog.csdnimg.cn/blog_migrate/69083f023edd12fdc381c12bebd4eb9c.jpeg)
第11步:选择“Spring Initializr”,然后点击Next按钮:
![f8a313d03fbfd70df14c5af38f55e7b2.png](https://i-blog.csdnimg.cn/blog_migrate/aa42b7c0a42c431bd08fed659b67f257.jpeg)
第12步:Group输入com.flying,Artifact输入app-accessor,Java选择版本8,然后点击Next按钮:
![3b5746ff23f49bee0093ad171920796f.png](https://i-blog.csdnimg.cn/blog_migrate/95dce5cfd7838e5d3474ae8e9f9d29be.jpeg)
第13步:根据需要选择Dependencies,然后点击Next按钮:
![a905604af2aea00010052b0d98923f09.png](https://i-blog.csdnimg.cn/blog_migrate/56c30c744855cabfa70504c708c7978d.jpeg)
第14步:输入模块的信息,这里只需要修改模块的路径,修改后点击Finish按钮:
![7ec094a61eb4ee1d41d2a7ee2e8a422d.png](https://i-blog.csdnimg.cn/blog_migrate/6e5a9339b54b7519f26062b16d90f878.jpeg)
第15步:修改app-accessor下的pom.xml文件,修改build节点的内容,用于修改打包信息,修改后的文件内容为:
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.3.3.RELEASEcom.flying app-accessor 0.0.1-SNAPSHOTapp-accessorDemo project for Spring Boot1.8org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test testorg.junit.vintage junit-vintage-engine org.apache.maven.plugins maven-jar-plugin *.properties*.yml*.xml true lib/falsecom.flying.appaccessor.AppAccessorApplication./resources/${project.build.directory}org.apache.maven.plugins maven-dependency-plugin copy-dependenciespackagecopy-dependencies ${project.build.directory}/lib/ maven-resources-plugin copy-resourcespackagecopy-resourcessrc/main/resources${project.build.directory}/resourcesorg.springframework.boot spring-boot-maven-plugin null null ZIP true ${project.build.directory}repackageapp-accessor
第16步:修改front-end目录下的pom.xml文件,将app-accessor作为front-end的子模块,并修改packaging的内容为pom。修改后文件内容为:
<?xml version="1.0" encoding="UTF-8"?> ec-platform com.flying1.0-SNAPSHOT4.0.0 front-end pomapp-accessor
第17步:重复第10-16步,将所有的服务均以模块的形式加入到项目。加入后目录结构如下图:
![dd5a7c1c9bd2334093aea87f8ebc1679.png](https://i-blog.csdnimg.cn/blog_migrate/1e29232273b3c4333e7172fa3bc5dedb.jpeg)
第18步:打开Terminal窗口,输入mvn clean package -DskipTests命令,即可完成编译打包命令:
![d7e6aceb56b5238c0489a422051d4b34.png](https://i-blog.csdnimg.cn/blog_migrate/f2169968d1feb7f7e40c523ed68f3414.jpeg)
![f13fc5e0d70125ba1eae055ef0961134.png](https://i-blog.csdnimg.cn/blog_migrate/c5bdb9781cb79aba5d6b8ad65d7c7333.jpeg)
![0167e8ac3faa60f00f710e17910a0130.png](https://i-blog.csdnimg.cn/blog_migrate/b1118711de6ab9c7fa8bd18387f37ac9.jpeg)
第19步:查看Windows目录,可以发现每个服务都生成了jar包:
![b088922b49a7b8a35ed94deb959f7838.png](https://i-blog.csdnimg.cn/blog_migrate/7f7e9029187a9597cc46fcfc43f5d427.jpeg)
说明:在本文的例子中,ec-platform、front-end、mid-layer、back-end目录中的src目录均没有源代码,可以直接删除。