在SpringCloud分布式微服务当中,我们需要创建很多个微服务,假如所有的微服务都分开编写,不方便我们的阅读和编码,何况一个人有可能一次性负责很多个模块。因此,我们可以利用SpringBoot的多模块开发,一个模块就是一个微服务的应用,方便我们去整体性的编写代码,后期的维护和管理也更加的方便。
接下来,我们首先去创建多个模块的应用
开发环境:Spring Boot(2.0.3),IDEA(2017),Maven(3.3.9),JDK(1.8)
首先大家可以参考我的《创建一个Spring Boot工程》,去创建一个Spring Boot工程。
点击生成一个Spring Boot工程,把项目解压到我们的工程目录,然后用IDEA打开,这个工程作为整个多模块的父工程。
打开之后,右键点击父工程的工程名,选择New---->Module
点击Module之后,进入下一个界面,然后再点击next,然后填写模块的基本信息
这里需要注意的是,Artifact必须要小写,否则会弹出artifact contains illegal characters的错误提示信息。模块的名称注意填写,然后填写包名(建议不要使用默认的值)。点击下一步,可以在这一步选择Maven的依赖,假如是Web就选择Web,并且下面还提供了很多Spring Cloud组件的依赖,按照你的需求可以选择这一步加上或者后期再加。
点击Next
编写Module name,点击Finish,我们就给父工程上面增加了一个模块。
重复上面的步骤,再添加两个个模块,总共三个模块,完毕之后目录结构如下:
我们在上面父工程上面建立了两个新的模块,我们现在需要做一些配置
首先把父工程里面无用的文件以及文件夹删除掉:包括三个模块的mvnw、mvnw.cmd文件及.mvn文件夹,还有父模块的src目录,因为此处的父模块只做依赖管理,不需要编写代码。
第二步:在父工程的pom文件当中,有两个非常重要的操作,第一个就是父模块的packaging一定是pom类型,第二个就是在pom文件当中把子模块的名称全部添加进去。
下面为父工程的pom文件
4.0.0
com.smartisan
RediaMallCloud
0.0.1-SNAPSHOT
pom
Mall_EurekaCenter
Mall_ManagerService
Mall_WechatService
RediaMallCloud
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
第三步:子模块pom的配置,我们在子模块的pom文件当中要进行一个操作,就是子模块的parent要使用顶层的父模块
下面贴出一个子模块的pom文件
4.0.0
com.smartisan
malleurekacenter
0.0.1-SNAPSHOT
jar
Mall_EurekaCenter
Demo project for Spring Boot
com.smartisan
RediaMallCloud
0.0.1-SNAPSHOT
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
我们进行了上述的配置,进行一个最简单的测试,打开IDEA右边工具栏当中的Maven Projects插件,选择RediaMallCloud当中的compile,点击执行。
我们可以看到,编译已经通过了。
1.假如我们想统一的进行版本的管理,我们可以在父pom文件当中引入
2.我们可以使用properties控制依赖包的版本号,便于版本维护。
父pom文件
4.0.0
com.smartisan
RediaMallCloud
0.0.1-SNAPSHOT
pom
Mall_EurekaCenter
Mall_ManagerService
Mall_WechatService
RediaMallCloud
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
UTF-8
UTF-8
1.8
2.5.3
0.10
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
com.alibaba
dubbo
${dubbo.version}
org.springframework
spring
com.101tec
zkclient
${zkclient.version}
org.springframework.boot
spring-boot-maven-plugin
其中一个子pom文件
4.0.0
com.smartisan
malleurekacenter
0.0.1-SNAPSHOT
jar
Mall_EurekaCenter
Demo project for Spring Boot
com.smartisan
RediaMallCloud
0.0.1-SNAPSHOT
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.alibaba
dubbo
com.101tec
zkclient
org.springframework.boot
spring-boot-maven-plugin
一步一步的走到最后面,我们已经建好了一个springboot的多模块的项目,希望看到的人都可以轻松的构建出来一个SpringBoot多模块出来,假如有问题的欢迎留下邮箱索要代码,有问题也希望大家能够共同探讨,一起进步。