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

时间:2022-08-15 12:32:38

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>b</groupId>  
  4.               <artifactId>b</artifactId>  
  5.               <version>1.0</version>  
  6.               <exclusions>  
  7.                      <exclusion>  
  8.                             <groupId>c</groupId>  
  9.                             <artifactId>c</artifactId>  
  10.                      </exclusion>  
  11.               </exclusions>  
  12.        </dependency>  
  13.        ...  
  14. </dependencies>