我们在分布式项目中引入 spring-cloud-dependencies 是为了控制旗下的子项目版本。
比如当我们项目需要:Spring Cloud Eureka(服务注册中心)、Spring Cloud Config(配置注册中心)、Spring Cloud Netflix等框架时,不比再引入<version> 节点,因为 spring-cloud-dependencies 会管理这些版本以避免版本冲突。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<!-- 配置中心服务端 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<!-- 没有版本节点 -->
</dependency>
<dependency>
<!-- eureka客户端 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<!-- 没有版本节点 -->
</dependency>
</dependencies>
由于 Spring Cloud 基于Spring Boot构建,而 Spring Cloud Alibaba 又基于Spring Cloud Common的规范实现,所以当我们使用 Spring Cloud Alibaba 来构建微服务应用的时候,不是像以往使用 Spring Cloud 的时候,直接引入 Spring Cloud 的主版本(Dalston、Edgware、Finchley、Greenwich这些)就可以了。
Spring Cloud Alibaba 并不算 Spring Cloud 旗下的子项目,所以在引入 Spring Cloud 的基础上需要单独引入 Spring Cloud Alibaba 依赖和对应版本号。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<!-- 配置中心服务端 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<!-- 没有版本节点 -->
</dependency>
<dependency>
<!-- eureka客户端 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<!-- 没有版本节点 -->
</dependency>
</dependencies>
这就是为什么当我们使用分布式的框架时,需要引入 spring-cloud-denpendencies 和 spring-cloud-alibaba-denpendencies
两大依赖了。
当然,当你只单独使用SpringCloud旗下的某个子项目时,不一定非要引入 spring-cloud-denpendencies 依赖,可以直接引入某个子项目的版本依赖, spring-cloud-denpendencies 的主要目的是:
当项目引入大量旗下子项目时,为了统一管理版本防止子项目冲突才需要引入。
本文阐述了在分布式项目中引入spring-cloud-dependencies的目的及其如何帮助统一管理子项目版本,避免版本冲突。同时,介绍了在使用SpringCloudAlibaba构建微服务时,如何正确引入并管理依赖。
986

被折叠的 条评论
为什么被折叠?



