如題,煩惱好久,突然看到scope一直是test,改成compile就好了。
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 倉庫中引用依賴)。
本文轉自Ryan.Miao部落格園部落格,原文連結:http://www.cnblogs.com/woshimrf/p/5135252.html,如需轉載請自行聯系原作者