Maven中依赖的特性

依赖的传递

疑问:在MakeFriends工程中没有依赖Hello这个jar包,却能够在MakeFriends中使用Hello jar包中的程序,这是为什么呢?

MakeFriends工程的pom.xml
在这里插入图片描述

HelloFriend工程的pom.xml

在这里插入图片描述
Hello工程的pom.xml
在这里插入图片描述
如果依赖jar包的范围是compile,则这个jar包可以进行传递,比如在A工程中依赖b.jar,b.jar中依赖c.jar,如果A工程工程中对b.jar的依赖是compile范围,b.jar中依赖的c.jar也是compile范围,则b.jar会将依赖的c.jar传递给A工程。
在这里插入图片描述

依赖的排除

当我们当前工程中依赖了B jar包,而B jar包又依赖了C jar包,如果依赖的方位是compile范围,这个时候C jar包就会被B jar包传递给当前工程,如果说依赖自动传递的C jar包是一个不稳定版本的jar包,或者对当前的工程会产生影响,那么我们当前工程可以在依赖B jar包的时候将传递过来的C jar包排除。

在这里插入图片描述

依赖的原则

  • jar包冲突解决原则
    在MakeFriends中依赖了HelloFriend,HelloFriend中依赖了Hello,并且将依赖的Hello传递给了MakeFriends,现在我们在MakeFriends中直接依赖Hello,这个时候有两个Hello,造成了冲突,那么MakeFriends中使用哪个Hello呢?
    ① 路径最短者优先
    在这里插入图片描述
    ② 路径相同时,先声明者优先
    在这里插入图片描述

统一管理依赖的jar包版本

比如我们在开发SSM工程的时候,我们需要依赖很多的Spring的jar包,那么这些Spring jar包如core ,beans,context,aop,excepress等等,肯定使用同一个版本的,这个时候我们最好统一声明版本,这样有利于我们jar包的升级。

	//声明版本
	<properties>
		<wage.spring.version>5.1.5.RELEASE</wage.spring.version>
	</properties>

	<dependencies>
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-core</artifactId>
		    
		    //在version用引用
		    <version>${wage.spring.version}</version>
		    
		    <scope>compile</scope>
		</dependency>
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-beans</artifactId>
		    <version>${wanbang.spring.version}</version>
		    <scope>compile</scope>
		</dependency>
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-aop</artifactId>
		    <version>${wage.spring.version}</version>
		    <scope>compile</scope>
		</dependency>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值