manen学习之三依赖

首先依赖的写法是 

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
 <groupId>log4j</groupId>
 <artifactId>log4j</artifactId>
 <version>1.2.17</version>
</dependency>
            
  </dependencies>

<dependencies></dependencies>中可以包含多个依赖

依赖具有传递性比如:

a-->b a依赖b,c-->a c依赖a 则c会自动依赖b

 

想让c依赖a的时候不自动依赖b可以使用2种方法

一:让a依赖b的时候scope>test</scope> 默认不写的是compile具有传递性。或者写<optional>true</optional>则当别的模块依赖a的时候不会依赖b

二:让c依赖a的时候可以主动排除c对b的依赖比如:

      <dependency>
  <groupId>com.djk</groupId>
  <artifactId>001-djk</artifactId>
  <version>0.0.1-SNAPSHOT</version>
      <exclusions>  
           <exclusion>       
               	<groupId>org.springframework</groupId>
				<artifactId>spring-core</artifactId>        
          </exclusion>  
     </exclusions>  
  
    </dependency>

排除了对spring的依赖。 <exclusion>中不需要写version的原因是一个模块不会依赖另一个模块得2个版本。

 

依赖的冲突:

a-->c1.0   b-->c1.1  d-->a和b  a模块依赖c的1.0版本  b模块依赖c的1.1版本 d模块依赖a 则d模块依赖c1.0还是c1.1?

谁在前面就依赖谁如果依赖a在前面则依赖c1.0 否则依赖c1.1 maven3.0版本后可以直接自己依赖c的版本,因为依赖会按最短

路径来依赖比如:

a-->c1.0 b--c1.1 e-->b  f-->a和e 则不管a和e依赖谁在前面 f依赖c1.0 因为他的路径短

 

注意:一个工程如果依赖一个模块的2个版本那么2个版本哪个在后面用哪个  和上面的不一样

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值