Springboot整合dubbo构建maven多模块项目(一)- 项目创建和pom.xml中jar包配置

完整代码下载:http://download.csdn.net/download/liyanlei5858/10206848

       以前一直用Spring作为容器构建项目,但是看到Spring官网一直在推Springboot,最重要的是Springboot确实避免自己寻找多个jar包(大多数情况下,可能自己都不记得该引入哪些jar包)和jar包之间冲突的问题,同时省掉了在集成其他框架时候,配置文件的配置,大大节省创建项目的过程,同时减少项目的代码量。自己目前认为的好处吧!不过项目搭建确实是一直以来一个比较头疼的问题,Springboot的诞生,感觉世界瞬间美好了,哈哈~~

      网上看了一些文章,由于离Springboot的学习有一个月的时间,项目中也没有应用,感觉有点生疏,蒸腾了一天,也没把Springboot整合dubbo构建maven多模块项目给整明白,各种报错,无从下手!真的都在怀疑,这些写文章的人到底是不是自己亲自动手实践了,才转发的文章,还是直接就为了写文章而写文章,直接就转了,自己也只是知道个大概?可能也是当天运气比较差,不太适合研究新东西,嘿嘿~~

     以下内容是自己亲自动手实践可以跑的起来的项目,有需要的朋友可以直接参考,如果软件环境(IntelliJ IDEA、Springboot、dubbo等)发生了改变,个人不保证5-6年之后还能正常跑,哈哈!

 

1 多模块项目创建

 

因为本系列的下一篇是《Spring Boot集成Dubbo》,所以本章就以创建多模块的dubbo项目作为示例。示例中的开发环境是Win 7,编辑器是Intellij IDEA,Java版本是1.8。

1.1 父模块创建

首先我们在IDEA中创建一个spring boot工程作为父项目。

一、在界面左上角选择File->New->Project后,选择Spring Initializr(不要选择maven,maven运行不起来,报各种错误),默认使用的Java版本是1.8。

二、点击Next,进入下一步,可以设置项目的一些基本信息。

这里我们先来温习下groupId、artifactId、package这三个参数的一般填写规范。

groupId和artifactId统称为“坐标”,是为了保证项目唯一性而提出的。groupId是项目组织唯一的标识符,实际对应JAVA的包的结构,ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。groupId一般分为多个段,一般第一段为域,第二段为公司名称。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org,公司名称是apache,artifactId是tomcat。包结构package最好是以groupId.artifactId打头的。

这是练习,为了省事,就没有直接按照标准来,直接默认了,但还是尽量按照上面的规范来填写。如下所示:

三、点击Next,进入下一个选择dependency的界面,作用是在pom中自动添加一些依赖,在项目开始时就下载。这里我们暂时不勾选任何依赖。

四、点击Next,进入下一个界面,填写工程名,并选择工程所在目录。填写完成后,点击Finish,即可创建一个spring boot项目。

1.2 创建子模块

在上面创建好的springboot-dubbo-parent工程名上,点击右键,选择New–>Module,进入New Module页面。

该模块为dubbo服务的提供方,实现springboot-dubbo-api中定义的接口,Name为springboot-dubbo-server,后面其他的参数都可参照父模块的参数设置。

下面创建另一个Module,dubbo服务的调用方,Name为springboot-dubbo-client,其他参数设置参照上步。

以上3个模块创建完成之后,整个项目的目录结构如下图所示。

我们可以删掉父模块的src目录,因为此处的父模块只做依赖管理,不需要编写代码。

到这里,一个父模块和两个子模块都创建完成啦~~

2 多模块项目配置

2.1 父模块pom配置

父pom是为了抽取统一的配置信息和依赖版本控制,方便子pom直接引用,简化子pom的配置。

1、父模块的打包类型

多模块项目中,父模块打包类型必须是pom,同时以给出所有的子模块,其中每个module,都是另外一个maven项目。

我们的项目中目前一共有两个子模块,springboot-dubbo-server和springboot-dubbo-client。后续新增的子模块也必须加到父pom的modules中。

2、继承设置

继承是maven中很强大的一种功能,继承可以使子pom获得parent中的各项配置,对子pom进行统一的配置和依赖管理。父pom中的大多数元素都能被子pom继承,想深入了解的同学可自行搜索学习~~

maven项目之间的继承关系通过表示。这里使用的开发框架是spring boot,默认继承spring-boot-starter-parent。

3、使用dependencyManagement管理依赖版本号

一般在项目最顶层的父pom中使用该元素,让所有子模块引用一个依赖而不用显式的列出版本号。maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

4、使用properties控制依赖包的版本号,便于版本维护

在properties标签中,添加各依赖包的版本号,然后在dependency中直接引用该依赖版本号的值即可。

springboot-dubbo-parent/pom.xml

 



   4.0.0

   com.example
   springboot-dubbo-parent
   0.0.1-SNAPSHOT
   pom

   springboot-dubbo-parent
   Demo project for Spring Boot

   
      org.springframework.boot
      spring-boot-starter-parent
      1.5.9.RELEASE
       
   

   
      springboot-dubbo-server
      springboot-dubbo-client
   
   
      UTF-8
      UTF-8
      1.8

      
      2.5.3
      3.4.5
      0.1
   

      
      
         
         
         

         
            org.springframework.boot
            spring-boot-starter-web
            1.5.9.RELEASE
         

         
         
            com.alibaba
            dubbo
            ${dubbo.version}
            
               
                  org.springframework
                  spring
               
            
         

         
            org.apache.zookeeper
            zookeeper
            ${zk.version}
            
               
                  org.slf4j
                  slf4j-log4j12
               
               
                  log4j
                  log4j
               
            
         
         
            com.github.sgroschupf
            zkclient
            ${zkclient.version}
         
      
   

   
      
         
            org.springframework.boot
            spring-boot-maven-plugin
         
      
   



 

 

2.2 子模块pom配置

1、继承设置

 

子模块的parent要使用顶层的父模块.

2、依赖设置

父模块pom中使用dependencyManagement来管理的依赖,在子模块pom中就不需要再写版本号了,exclusion元素也不需要再写。

springboot-dubbo-server\pom.xml

 



   4.0.0

   com.example
   springboot-dubbo-server
   0.0.1-SNAPSHOT
   jar

   springboot-dubbo-server
   Demo project for Spring Boot

   
      com.example
      springboot-dubbo-parent
      0.0.1-SNAPSHOT
   

   
   

   
      
         org.springframework.boot
         spring-boot-starter
      

      
         org.springframework.boot
         spring-boot-starter-test
         test
      

      
      
         com.alibaba
         dubbo
      
      
         org.apache.zookeeper
         zookeeper
      
      
         com.github.sgroschupf
         zkclient
      
   

   
      
         
            org.springframework.boot
            spring-boot-maven-plugin
         
      
   



 

springvoot-dubbo-client/pom.xml

 



   4.0.0

   com.example
   springboot-dubbo-client
   0.0.1-SNAPSHOT
   jar

   springboot-dubbo-client
   Demo project for Spring Boot

   
      com.example
      springboot-dubbo-parent
      0.0.1-SNAPSHOT
   

   
   

   
      
         org.springframework.boot
         spring-boot-starter
      

      
         org.springframework.boot
         spring-boot-starter-test
         test
      

      
         org.springframework.boot
         spring-boot-starter-web
      

      
      
         com.alibaba
         dubbo
      
      
         org.apache.zookeeper
         zookeeper
      
      
         com.github.sgroschupf
         zkclient
      
      
         com.example
         springboot-dubbo-server
         0.0.1-SNAPSHOT
      
   

   
      
         
            org.springframework.boot
            spring-boot-maven-plugin
         
      
   



 

 

3、关于exclusions标签(了解)

当dependency A自身的依赖B,与其他dependency存在冲突的时候(最常见的就是版本冲突),我们就需要把B排除掉,这时就需要使用exclusions元素。

那么我们怎么知道一个dependency自身包含哪些依赖呢?
1、通过mvn dependency:tree命令查看依赖树
2、使用IDEA或其他IDA查看依赖树

点击IDEA右侧的Maven Projects,在每个模块的Dependencies中即可查看每个dependency内部的依赖及版本号,从来识别哪些依赖需要被排除掉。

以dubbo为例,我们先删除配置,点开Maven Projects,可以看到2.5.3版本的dubbo中使用的spring版本是2.5.6,这是一个很老的版本,有一些方法是没有的,现在在用的spring版本一般都是4.*的,所以我们需要把它排除掉,避免后续报错。

要查看当前项目中使用的spring版本,可以按住左键,然后点击父pom中的值,进入更上一层pom,再重复上步操作,可以看到spring的版本是4.3.12。

Springboot整合dubbo构建maven多模块项目(一)- 项目创建和pom.xml中jar包配置_第1张图片

按住ctrl键,鼠标点击,然后点击父pom中的值,进入更上一层pom:

可以看到spring的版本是4.3.13:

3 测试

这里就先不写代码了,到下一章再写。直接编译一下,如果编译成功,说明pom文件的配置没有什么大问题。

点开右侧Maven Projects,双击父模块Lifecycle中的compile,进行代码编译,或者直接在Terminal中执行命令:mvn compile。

编译通过啦~~

到这里,Spring Boot多模块项目创建与配置就介绍完啦。

这样一个过程实践下来,再去看开发的代码结构,应该会轻松不少吧~~~

参考:

https://testerhome.com/topics/11359

https://www.jianshu.com/p/6361a670ebf7

你可能感兴趣的:(dubbo,spring,boot,java,spring,boot,后端)