javascript
Spring Boot集成Dubbo多模块项目创建与配置
目錄
- 概述
- 使用工具
- 環境搭建
- 1.父模塊創建
- 2.創建子模塊
- 多模塊項目配置
- 一、 父模塊pom配置
- 1.繼承設置
- 2.使用dependencyManagement管理依賴版本號
- 3.使用properties控制依賴包的版本號,便于版本維護
- parent-module模塊
- pom.xml
- 二、子模塊pom配置
- 1.繼承設置
- 2.依賴設置
- springboot-dubbo-server模塊
- pom.xml
- springvoot-dubbo-client模塊
- pom.xml
- 三、關于exclusions標簽
- 效果展示
概述
dubbo是一個分布式服務框架,致力于提供高性能透明化RPC遠程調用方案,提供SOA服務治理解決方案。
maven多模塊項目通常由一個父模塊和若干個子模塊構成,每個模塊都對應著一個pom.xml。它們之間通過繼承和聚合(也稱作多模塊)相互關聯。多模塊適用于一些比較大的項目,通過合理的模塊拆分,實現代碼的復用,便于維護和管理。
使用工具
IDEA2018.2 JDK1.8
環境搭建
1.父模塊創建
首先我們在IDEA中創建一個spring boot工程作為父項目。
一、選擇Spring Initializr,默認使用的Java版本是1.8。
點擊Next,進入下一個界面,填寫工程名,并選擇工程所在目錄。填寫完成后,點擊Finish,即可創建一個spring boot項目。
2.創建子模塊
在上面創建好的parent-module工程名上,點擊右鍵,選擇New–>Module,進入New Module頁面。
創建Name為springboot-dubbo-server的子模塊,后面其他的參數都可參照父模塊的參數設置。
創建Name為springboot-dubbo-client的子模塊,其他參數設置參照上步。
以上3個模塊創建完成之后,整個項目的目錄結構如下圖所示。
因為此處的父模塊只做依賴管理,不需要編寫代碼。
多模塊項目配置
一、 父模塊pom配置
父pom是為了抽取統一的配置信息和依賴版本控制,方便子pom直接引用,簡化子pom的配置。
1.繼承設置
繼承是maven中很強大的一種功能,繼承可以使子pom獲得parent中的各項配置,對子pom進行統一的配置和依賴管理。
maven項目之間的繼承關系通過表示。這里使用的開發框架是spring boot,默認繼承spring-boot-starter-parent。
2.使用dependencyManagement管理依賴版本號
一般在項目最頂層的父pom中使用該元素,讓所有子模塊引用一個依賴而不用顯式的列出版本號。maven會沿著父子層次向上走,直到找到一個擁有dependencyManagement元素的項目,然后它就會使用在這個dependencyManagement元素中指定的版本號。
3.使用properties控制依賴包的版本號,便于版本維護
在properties標簽中,添加各依賴包的版本號,然后在dependency中直接引用該依賴版本號的值即可。
parent-module模塊
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>parent-module</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging> <!--父模塊打包類型必須為pom--><modules><module>springboot-dubbo-server</module> <!--對子項目springboot-dubbo-server的聚合--><module>springboot-dubbo-client</module> <!--對子項目springboot-dubbo-client的聚合--></modules><name>parent-module</name> <!--父項目的項目名--><description>Demo project for Spring Boot</description><!--spring boot 父依賴--><parent> <!-- parent指明繼承關系,給出被繼承的父項目的具體信息--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.8.RELEASE</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><!-- 在properties中統一控制依賴包的版本,更清晰--><dubbo.version>2.5.3</dubbo.version><zkclient.version>0.10</zkclient.version></properties><dependencyManagement> <!--dependencyManagement用于管理依賴版本號--><dependencies><!--新增后續dubbo項目中所需依賴--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version><!-- 把dubbo自帶的spring版本排除掉--><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>${zkclient.version}</version></dependency></dependencies></dependencyManagement> </project>二、子模塊pom配置
1.繼承設置
子模塊的parent要繼承父模塊.
2.依賴設置
父模塊pom中使用dependencyManagement來管理的依賴,在子模塊pom中就不需要再寫版本號了,exclusion元素也不需要再寫。
springboot-dubbo-server模塊
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>springboot-dubbo-server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-dubbo-server</name> <!--子項目的項目名--><description>Demo project for Spring Boot</description><!-- 子模塊繼承的父模塊--><parent><groupId>com.example</groupId><artifactId>parent-module</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--新增后續dubbo項目中所需依賴父模塊pom中使用dependencyManagement來管理依賴版本號,子模塊pom中不需要再寫版本號,exclusion也不需要--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><!--<version>0.10</version>--></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>springvoot-dubbo-client模塊
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>springboot-dubbo-client</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-dubbo-client</name> <!--子項目的項目名--><description>Demo project for Spring Boot</description><!-- 子模塊繼承的父模塊--><parent><groupId>com.example</groupId><artifactId>parent-module</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--spring boot配置web的依賴--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--新增后續dubbo項目中所需依賴父模塊pom中使用dependencyManagement來管理依賴版本號,子模塊pom中不需要再寫版本號父模塊pom中里有exclusion,子模塊pom中不要寫exclusion--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId></dependency><!--client模塊需要依賴server模塊--><dependency><groupId>com.example</groupId><artifactId>springboot-dubbo-server</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>三、關于exclusions標簽
當dependency A自身的依賴B,與其他dependency存在沖突的時候(最常見的就是版本沖突),我們就需要把B排除掉,這時就需要使用exclusions元素。
點擊IDEA右側的Maven Projects,在每個模塊的Dependencies中即可查看每個dependency內部的依賴及版本號,來識別哪些依賴需要被排除掉。
以dubbo為例,我們先刪除配置,打開Maven
Projects,可以看到2.5.3版本的dubbo中使用的spring版本是2.5.6,現在在用的spring版本一般都是4.*的,所以我們需要把它排除掉,避免后續報錯。
刪除dubbo中的spring版本后,添加exclusions標簽
要查看當前項目中使用的spring版本,可以ctrl+左鍵,然后點擊父pom中的值。
ctrl+左鍵,然后點擊父pom中的值,進入更上一層pom:
可以看到spring的版本是4.3.12:
效果展示
點開右側Maven Projects,雙擊父模塊Lifecycle中的compile,進行代碼編譯,或者直接在Terminal中執行命令:mvn compile。
編譯通過
總結
以上是生活随笔為你收集整理的Spring Boot集成Dubbo多模块项目创建与配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven项目的依赖、继承管理
- 下一篇: SpringDataJpa框架单元测试实