Maven的依賴範圍
阿新 • • 發佈:2017-06-29
clas 推薦 temp 是你 沒有 spa 應用服務 let 運行
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倉庫中引用依賴)。
Maven的依賴範圍