Maven依賴中scope釋義

scope元素的作用:控制 dependency 元素的使用範圍。通俗的講,就是控制 Jar 包在哪些範圍被加載和使用。
scope具體含義如下:

compile(默認)

含義:compile 是默認值,如果沒有指定 scope 值,該元素的默認值爲 compile。被依賴項目需要參與到當前項目的編譯,測試,打包,運行等階段。打包的時候通常會包含被依賴項目。

provided

含義:被依賴項目理論上可以參與編譯、測試、運行等階段,相當於compile,但是再打包階段做了exclude的動作。
適用場景:例如, 如果我們在開發一個web 應用,在編譯時我們需要依賴 servlet-api.jar,但是在運行時我們不需要該 jar 包,因爲這個 jar 包已由應用服務器提供,此時我們需要使用 provided 進行範圍修飾。

runtime

含義:表示被依賴項目無需參與項目的編譯,但是會參與到項目的測試和運行。與compile相比,被依賴項目無需參與項目的編譯。
適用場景:例如,在編譯的時候我們不需要 JDBC API 的 jar 包,而在運行的時候我們才需要 JDBC 驅動包。

test

含義: 表示被依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯,執行。
適用場景:例如,Junit 測試。

system

含義:system 元素與 provided 元素類似,但是被依賴項不會從 maven 倉庫中查找,而是從本地系統中獲取,systemPath 元素用於制定本地系統中 jar 文件的路徑。例如:

<dependency>
    <groupId>org.lee</groupId>
    <artifactId>myutil</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/webapps/WEB-INF/lib/myutil.jar</systemPath>
</dependency>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章