摘要
如果您在使用Spring boot 或者 Spring Cloud时,需要用到alibaba.cloud的依赖,你就会发现,直接引入它的maven依赖是不行的,会报错。
如果您在使用Spring boot 或者 Spring Cloud时,需要用到alibaba.cloud的依赖,你就会发现,直接引入它的maven依赖是不行的,会报错。
我是如何发现的这个问题的呢,我在Spring cloud gateway 中想要使用alibaba的sentinel做限流使用,然后就按照阿里官方的教程引入了依赖:
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-spring-cloud-gateway-adapter</artifactId> <version>x.y.z</version> </dependency>
但是发现特么的居然pom报错,无法引入它的依赖,然后我就开始搜索Spring cloud 整合 sentinel 依赖报错的原因,发现网上的各种文章,个个都在引用sentinel,但是没有一个文章说这样会报错,我自然也找不到为啥Spring cloud gateway整合 sentinel 依赖报错(引入不进来)的解决办法。
直到我忽然想起来,sentinel 的groupId不是org.springframework.cloud,而是属于alibaba自己的groupId了啊,但是我的项目中仍旧配置的是org.springframework.cloud。
想到了这个问题,我就开始分析如何才能引入alibaba.cloud,废了一番功夫,终于知道如何引用了,现在分享给大家。
正常你的pom文件中<dependencyManagement>标签中是这样的:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
但这个配置不能让你引入alibaba.cloud的pom依赖,如果你想用它,需要引入alibaba.cloud的management,如下:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--整合Spring Cloud Alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
只有你在dependencyManagement配置了alibaba.cloud,你才能正常在pom中引入alibaba.cloud的依赖。
详见官方文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md