maven scope作用域和传递性和多层依赖排除不需要的依赖

scope作用域:

          1  comipe  默认,编译 测试 打包都依赖,有传递性,会被打到包里;

  2 provided  编译 测试依赖,不会打包,有传递性,不会被打到包里。例如servlet-api有容器提供,没必要打到包里。

          3 test 测试时依赖,不会打包,没有传递性,不会被打到包里。如测试包下的测试。

         4 runtime 测试和运行时候依赖,有传递性,会打到包里。如jdbc驱动。


传递性:层级最短的,最先被引用的被传递。

如A项目有x.jar,B项目也要想x.jar,如果c项目先引用的A又引用的B,则使用A里的jar,如果A里的jar是通过A0引用得到的,则先使用B里的jar。


排除不需要的依赖 

a依赖b,b依赖c,如果我们只想依赖b不依赖c,就要用exclusions

       

  1. <dependencies>  
  2.        <dependency>  
  3.               <groupId>bgroupId>  
  4.               <artifactId>bartifactId>  
  5.               <version>1.0version>  
  6.               <exclusions>  
  7.                      <exclusion>  
  8.                             <groupId>cgroupId>  
  9.                             <artifactId>cartifactId>  
  10.                      exclusion>  
  11.               exclusions>  
  12.        dependency>  
  13.        ...  
  14. dependencies>  


你可能感兴趣的:(maven)