compile?(編譯范圍)
compile是默認的范圍;如果沒有提供一個范圍,那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath?中可用,同時它們也會被打包。
provided?(已提供范圍)
provided?依賴只有在當JDK?或者一個容器已提供該依賴之后才使用。例如,?如果你開發了一個web?應用,你可能在編譯?classpath?中需要可用的Servlet API?來編譯一個servlet,但是你不會想要在打包好的WAR?中包含這個Servlet API;這個Servlet API JAR?由你的應用服務器或者servlet?容器提供。已提供范圍的依賴在編譯classpath?(不是運行時)可用。它們不是傳遞性的,也不會被打包。
runtime?(運行時范圍)
runtime?依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC
驅動實現。
test?(測試范圍)
test范圍依賴?在一般的編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用。
system?(系統范圍)
system范圍依賴與provided?類似,但是你必須顯式的提供一個對于本地系統中JAR?文件的路徑。這么做是為了允許基于本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven?也不會在倉庫中去尋找它。如果你將一個依賴范圍設置成系統范圍,你必須同時提供一個?systemPath?元素。注意該范圍是不推薦使用的(你應該一直盡量去從公共或定制的?Maven?倉庫中引用依賴)。