Maven在編譯項目主代碼時須要使用一套classpath,在編譯和執行測試的時候會使用另一套classpath,最後實際運行Maven項目的時候,又會使用一套classpath。spring
依賴範圍就是用來控制依賴與這3種classpath(編譯classpath、測試classpath、運行classpath)的關係,Maven有如下幾種依賴範圍:api
範圍 | 描述 |
compile | 編譯依賴範圍。若是沒有指定,就會默認使用該依賴範圍。使用此依賴範圍的Maven依賴,對於編譯、測試、運行3種classpath都有效。典型的例子是spring-core。 |
test | 測試依賴範圍。使用此依賴範圍的Maven依賴,只對於測試classpath有效,在編譯主代碼或運行項目時將沒法使用此類依賴。典型的例子是Junit。 |
provided | 已提供依賴範圍。使用此依賴範圍的Maven依賴,對於編譯和測試classpath有效,但在運行時無效。典型的例子是servlet-api。 |
runtime | 運行時依賴範圍。使用此依賴範圍的Maven依賴,對於測試和運行classpath有效,但在編譯主代碼時無效。典型的例子是jdbc驅動實現。 |
system | 系統依賴範圍。該依賴與3種classpath的關係,和provided依賴範圍徹底一致。可是使用system範圍的依賴時必須經過systemPath元素顯式地指定依賴文件的路徑。因爲此類依賴不是經過Maven倉庫解析的,每每與本機系統綁定,可能形成構建的不可移植,所以應該謹慎使用。 |
import | 後續介紹 |