idea 启动项目 outMemory idea 启动项目有两个build_idea如何刷新project


当我们步入到SpringBoot的世界后,我们的程序就可能由一个个微服务组成,面对着大量的服务,我们如何进行管理呢?

我最近几年一直使用IDEA作为开发工具,使用IDEA开发多服务组成的软件,我经历了三个阶段:

第一阶段:每个服务,建立一个项目;

这种方式的优点是服务之间很独立,缺点是每次切换服务,都很费时,而且在服务之间查看代码不方便。

第二阶段:所有的服务属于一个项目,项目下建立模块,每个服务对应一个IDEA模块;

和第一阶段的方式相比,这种方式的优点是服务之间查看代码比较容易。

第三阶段:在IDEA环境下,使用Maven的方式管理所有服务,所有服务属于一个项目,服务之间的关系构成树形结构,就像Windows或Linux的目录结构一样。

这个阶段,所有的服务一目了然,而且还能利用Maven的能力自动打包,感觉非常清爽!


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_02


下面,我用一个例子来讲解如何实现第三阶段的服务管理方式。

假如我们要开发一个电商平台,平台由前端(包含APP接入器、浏览器接入器、业务管理系统三个服务)、中间层(包含消息队列、事务处理器、业务驱动器三个服务)、后端(包含数据中心、规则引擎两个服务)三部分组成:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_03


这是详细步骤:

第1步:打开IDEA,点击“Create New Project”:


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_04


第2步:选择Maven,然后点击Next:


idea 启动项目 outMemory idea 启动项目有两个build_idea如何刷新project_05


第3步:GroupId输入com.flying,ArtifactId输入ec-platform,然后点击Next:


idea 启动项目 outMemory idea 启动项目有两个build_idea如何刷新project_06


第4步:Project Name输入ec-platform,然后点击Finish按钮:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_07


第5步:在ec-platform树节点选择 “New | Module” 菜单项:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_08


第6步:选择Maven,然后点击Next按钮:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_09


第7步:ArtifactId输入front-end,然后点击Next按钮:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_10


第8步:Module Name输入front-end,然后点击Finish按钮:


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_11


第9步:重复第6-8步,分别建立mid-layer和back-end模块。完成本步骤后界面如下:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_12


第10步:选择front-end节点的右键菜单项“New | Module”:


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_13


第11步:选择“Spring Initializr”,然后点击Next按钮:


idea 启动项目 outMemory idea 启动项目有两个build_idea如何刷新project_14


第12步:Group输入com.flying,Artifact输入app-accessor,Java选择版本8,然后点击Next按钮:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_15


第13步:根据需要选择Dependencies,然后点击Next按钮:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_16


第14步:输入模块的信息,这里只需要修改模块的路径,修改后点击Finish按钮:


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_17


第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步,将所有的服务均以模块的形式加入到项目。加入后目录结构如下图:


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_18


第18步:打开Terminal窗口,输入mvn clean package -DskipTests命令,即可完成编译打包命令:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_19


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_20


idea 启动项目 outMemory idea 启动项目有两个build_java一个请求返回多个照片_21


第19步:查看Windows目录,可以发现每个服务都生成了jar包:


idea 启动项目 outMemory idea 启动项目有两个build_idea 启动项目 outMemory_22


说明:在本文的例子中,ec-platform、front-end、mid-layer、back-end目录中的src目录均没有源代码,可以直接删除。