Maven依赖

2. maven依赖 dependency:
    groupId、artifactId、version 依赖的基本坐标
    type  依赖的类型,对应packaging坐标,默认为jar
    optional 标记依赖是否可选
    exclusions 用来排除传递性依赖
    scope  依赖的范围,用来控制依赖与3中classpath的关系(编译classpath,测试classpath,运行classpath)
       compile 编译依赖范围(默认),对编译、测试、运行三种classpath都有效
       test 测试依赖范围  对测试classpath有效
       provided以提供依赖范围  对编译、测试两种classpath有效
       runtime 运行时依赖范围  对测试、运行两种classpath有效
       system 系统依赖范围  对编译、测试两种classpath有效
         使用时必须通过systemPath元素指定依赖文件的路径,
       依赖的文件不是由Maven仓库管理,是在本级系统中。
         
       <scope>system</scope>
       <systemPath>c:/aaa.jar</systemPath>
       import  导入依赖范围,不会对三种classpath产生实际的影响
   
2.1   传递性依赖
    A依赖于B,B依赖于C,A对于B是第一直接依赖,B对于C是第二直接依赖,A对于C是传递性依赖。
    
    第一直接依赖和第二直接依赖的依赖范围决定了传递性依赖的范围。
    
2.2   依赖调解
    A->B->C(1.0),E->C(2.0)
    X->Y(1.0),Z->Y(2.0)
  原则1:路径最近者优先
  原则2:第一生命者优先
  经maven依赖调解后,不可能出现groupId和artifactId相同,version不同的两个依赖
    
   mvn dependency:list  依赖列表
   mvn dependency:tree  依赖树
   mvn dependency:analyze  分析依赖

2.3 可选依赖
  A依赖于B,B依赖与X或Y,X和Y都是可选依赖。
  可选依赖不会传递
 <dependency>
      <groupId>xxx</groupId>
      <artifactId>mysql</artifactId>
      <version>5.0</version>
      <optional>true</optional>
     </dependency>
 <dependency>
      <groupId>xxx</groupId>
      <artifactId>oracle</artifactId>
      <version>10g</version>
      <optional>true</optional>
     </dependency>

2.4 排除依赖
  A依赖于B,B依赖于C1,C1不稳定,在A对B的依赖配置中排除B对C1的依赖,再配置一个稳定的C2依赖
 <dependency>
      <groupId>xxx</groupId>
      <artifactId>oracle</artifactId>
      <version>10g</version>
      <exclusions>
   <exclution>
    <groupId>xxx</groupId>
    <artifactId>C1</artifactId>
   </exclusion>
  </exclusions>
     </dependency>
 <dependency>
      <groupId>xxx</groupId>
      <artifactId>C2</artifactId>
      <version>1.0</version>
     </dependency>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值