【maven实战】05-依赖传递

考虑一个springframework的项目如果不使用maven那么在项目中就需要手动下载相关的依赖。由于spring又会依赖于其他开源类库,因此实际中往往会下载一个很大的如spring-framework-2.5.6.zip这样一个包,这里包含了所有spring的包以及它依赖的包。这么做往往引入了很多不必要的依赖。

另一种做法只下载spring-framework-2.5.6.zip这样一个包,这里不包含其他相关依赖,到实际使用在根据出错信息逐个加入相关依赖包,显然这是一个相当麻烦的事。

maven的传递性依赖机制可以很好的解决这一问题。如果我们的项目有一个org.springframework:spring-core:2.5.6的依赖,而实际上spring-core也有他自己的依赖,我们可以直接访问位于中央仓库的该构件的POM,http://repo1.maven.org/maven2/org/springframework/spring-core/2.5.6/spring-core-2.5.6.pom。该文件包含了一个commons-logging依赖,如下:

<dependency>

 <groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.1.1</version>

</dependency>

该依赖没有声明依赖范围,那么其依赖范围就是默认compile。我们的项目和spring-core的依赖范围也是compile。
我们的项目有一个compile范围的spring-core依赖,spring-core有一个compile范围的commons-logging依赖,那么commons-logging就会成为我们项目的compile范围依赖,commons-logging是我们项目的一个依赖性传递。

有了传递性依赖机制在使用springframework的时候就不用考虑他依赖了什么,也不用担心引入多余的依赖。maven会解析各个直接依赖的POM,将那些必要的间接依赖以传递性依赖的形式引入到当前的项目中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值