java用户当使用依赖冲突时,怎么排除冲突的依赖

  1. 我们在java项目的pom.xml中,很有可能会遇到依赖之间相互冲突的时候,遇到这个问题的时候,通常是以下的问题:
    (1) 我们明明没有引入这个依赖,但是这个依赖就是在
    这个问题就是我们引入的其它依赖中早已经集成了这个依赖
    (2) 我们明明引入了这个依赖,但是这个依赖却没有发挥作用
    这个问题就是我们引入的其它依赖与我们需要的依赖发生了依赖冲突
  1. 对于依赖冲突,我们的正确做法是将我们不需要的依赖排除掉,并且将我们需要的依赖引入,这样就完美的解决了依赖冲突的问题:
(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值