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>