springboot建立dubbo分布式项目时,至少需要接口工程、消费者、提供者共3个模块。此时专门创建一个Maven模块parent作为这3个模块的依赖管理模块(自定义parent依赖管理模块的类似于springboot的父工程)。
-
创建一个Maven工程parent作为模块管理工程,删除src目录,pom中指定
<packaging>pom</packaging>
。 -
接口创建为普通Maven工程,提供者为springbootweb工程,消费者为springbootweb+thymeleaf工程。
-
在模块管理工程parent中引入springboot的父工程(也就是提供者和消费者原有的父工程)以及jdk版本控制的属性
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
-
在接口、提供者、消费者工程中分别删除原有的父工程(有的话)和properties中的jdk版本控制,引入模块管理工程parent为自己的父工程。形成了springboot父工程——>模块管理工程(同时管理jkd版本)——>接口、提供者、消费者工程的继承依赖关系。
-
因为在消费者和提供者中要引入一些springboot父工程管理不了的依赖,所以,这些依赖交给自定义的模块管理工程parent进行管理(主要是管理版本号)。在properties中指定某个springboot父工程管理不了的依赖的版本号,然后在dependencyManagement中指定该依赖,并引用版本号。注意模块管理工程不能管理接口工程。
<properties>
<java.version>1.8</java.version>
<dubbo.version>2.0.0</dubbo.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- dubbo继承springboot起步依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
- 在消费者、提供者子工程中引用dubbo时,直接:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<!--<version>2.0.0</version>-->
</dependency>
即可,不需要指定版本号,因为版本号已经在parent模块管理工程中管理了
7. 注意:后续操作之前,要将parent和接口工程进行Maven安装,否则在Maven仓库中找不到这两个依赖,因为提供者和消费者需要导入这两个依赖(parent和接口工程)。并且后续如果parent和接口工程有更新,也要重新Maven安装。