compile(編譯范圍)
compile是默認的范圍;如果沒有提供一個范圍,那該依賴的范圍就是編譯范
圍。編譯范圍依賴在所有的classpath中可用驻龟,同時它們也會被打包。
provided(已提供范圍)
provided依賴只有在當JDK或者一個容器已提供該依賴之后才使用缸匪。例如翁狐,如果
你開發(fā)了一個web應用,你可能在編譯classpath中需要可用的Servlet API來編
譯一個servlet凌蔬,但是你不會想要在打包好的WAR中包含這個Servlet API露懒;這個
Servlet API JAR由你的應用服務器或者servlet容器提供。已提供范圍的依賴在
編譯classpath(不是運行時)可用砂心。它們不是傳遞性的懈词,也不會被打包。
runtime(運行時范圍)
runtime依賴在運行和測試系統(tǒng)的時候需要辩诞,但在編譯的時候不需要坎弯。比如,你
可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC驅動實
現(xiàn)荞怒。
test(測試范圍)
test范圍依賴 在一般的 編譯和運行時都不需要,它們只有在測試編譯和測試運
行階段可用秧秉。
system(系統(tǒng)范圍)
system范圍依賴與provided類似褐桌,但是你必須顯式的提供一個對于本地系統(tǒng)中
JAR文件的路徑。這么做是為了允許基于本地對象編譯象迎,而這些對象是系統(tǒng)類庫
的一部分荧嵌。這樣的構件應該是一直可用的,Maven也不會在倉庫中去尋找它砾淌。啦撮。如
果你將一個依賴范圍設置成系統(tǒng)范圍,你必須同時提供一個systemPath元素汪厨。注
意該范圍是不推薦使用的(你應該一直盡量去從公共或定制的Maven倉庫中引用
依賴)赃春。