Maven的依賴範圍
依賴:項目需要依靠一個jar
依賴範圍:依賴一個jar,並不一定是在項目整個生命週期都需要它,可能只是在某一個階段需要,那麼依賴範圍就是在定義在哪些階段依賴這個jar
A依賴B,需要在A的pom.xml文件中添加B的座標,大家注意到我們之前添加座標時還有寫了一個scope ,這是依賴的範圍。
scope有幾個可選值, 如:
1.compile:默認值,表示編譯依賴範圍。即編譯,測試,運行階段都需要,會被打包。(默認值,表示compile全程都存在/需要)
2.test:表示測試依賴範圍。即編譯,運行階段不需要,只在測試階段需要,不會被打包。如:junit.
3.provided:表示已提供依賴範圍。即在編譯、測試階段需要,在運行階段不需要(其實也是需要的,只不過是服務器本身有這些jar包,爲了避免因爲版本不同造成衝突,所以在運行階段就不需要提供),不會被打包。 例如:servlet-api和jsp-api會被tomcat服務器提供
4.runtime:表示運行時提供依賴範圍。即在編譯階段不需要,在測試、運行階段需要,會被打包。比如jstl、jdbc驅動。
5.system:system範圍依賴與provided類似,但是你必須顯式的提供一個對於本地系統中JAR文件的路徑,需要指定systemPath磁盤路徑,system依賴不推薦使用。