概述
- 我们在java项目的pom.xml中,很有可能会遇到依赖之间相互冲突的时候,遇到这个问题的时候,通常是以下的问题:
(1) 我们明明没有引入这个依赖,但是这个依赖就是在
这个问题就是我们引入的其它依赖中早已经集成了这个依赖
(2) 我们明明引入了这个依赖,但是这个依赖却没有发挥作用
这个问题就是我们引入的其它依赖与我们需要的依赖发生了依赖冲突
- 对于依赖冲突,我们的正确做法是将我们不需要的依赖排除掉,并且将我们需要的依赖引入,这样就完美的解决了依赖冲突的问题:
(1) 当我们引入其他模块时,我们排除掉当前模块不需要的依赖(通常我们会将通用依赖写在“公用”模块中,这里我们就举例引入公用模块时排除掉我们不需要的依赖)
<dependency>
<groupId>cn.xhc.elevator_common</groupId>
<artifactId>elevator_common</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 这里我们排除依赖是在pom.xml文件中,我们用的是<exclusions>标签,这个标签内可包含多个<exclusion>标签,而<exclusion>标签内就是写我们要排除的依赖,我这里举例排除的是common(公用)模块中的ribbon负载均衡依赖,这样的话,我引入common(公用)模块之后,我当前模块就不会再有这个依赖了。 -->
(2) 当我们引入其他依赖时,我们需要排除掉在这个依赖中我们不需要的依赖(这里我就拿熔断器hystrix依赖举例)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.5.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 这里我们排除依赖也是在pom.xml文件中,这种情况适用于当我们想引入熔断器hystrix依赖,而不引入负载均衡ribbon依赖时的用法 -->
(3) 目前我还了解到可以使用在springboot项目中,也可以使用@SpringBootApplication注解的exclude属性来禁用加载不需要加载的自动化配置,例如:我们在当前模块中,没有使用mysql数据库,但是我们的公用模块中引入了mysql依赖,这时我们就可以使用exclude属性来禁用数据库自动加载配置
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
或者
@SpringBootApplication(excludeName = {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"})
(4) 同时我也了解到上面的禁用自动化配置还可以在application.yml/properties配置文件中配置
application.properties中:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
application.yml中:
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
最后
以上就是顺心铃铛为你收集整理的java用户当使用依赖冲突时,怎么排除冲突的依赖的全部内容,希望文章能够帮你解决java用户当使用依赖冲突时,怎么排除冲突的依赖所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复