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
- <dependencies>
- <dependency>
- <groupId>b</groupId>
- <artifactId>b</artifactId>
- <version>1.0</version>
- <exclusions>
- <exclusion>
- <groupId>c</groupId>
- <artifactId>c</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- ...
- </dependencies>