. maven在不同的時期諸如:編譯、測試和運行會使用不同的classpath,maven依賴範圍就是用來控制着三中classpath的關係的,maven有如下依賴範圍:
1. compile
編譯依賴範圍,如果不指定,默認會使用該依賴範圍。使用此依賴範圍的依賴,會在三個classpath中都有效。
2. test
測試依賴範圍,使用此依賴範圍的依賴,只會在測試的classpath中生效,典型的如junit。
3. provided
已提供依賴範圍,使用此依賴範圍的依賴,會在編譯和測試的classpath生效。該依賴範圍表示,運行容器已提供該依賴,只需在編譯和測試期間保證測試通過即可,典型的依賴如sevlet-api。
4. runtime
運行是依賴範圍,使用此依賴範圍的依賴,只會對測試和運行時的classpath生效。典型的例子是jdbc,項目主代碼編譯時只需jdk提供的jdbc接口。
5. system
系統依賴範圍,該依賴和三種classpath的關係和provided相同。但是使用system依賴範圍的依賴必須通過systePath元素顯示的制定依賴文件的路徑。