Maven - jar包作用域(scope標籤)

  • compile:默認值,適用於所有階段(開發、測試、部署、運行),本jar會一直存在所有階段。

  • provided:只在開發、測試階段使用,目的是不讓Servlet容器和你本地倉庫的jar包衝突 ,告訴maven這個jar包未來在我的服務器中有,不需要將它打包在工程中;實際項目打包的時候,lib文件夾裏面maven導入的provided包(jar包)都沒有。對於編譯,測試的classpath都有效,但對於運行無效。因爲由容器已經提供,例如servlet-api。

  • runtime:只在運行時使用,如JDBC驅動,適用運行和測試階段。

  • test:只在測試時使用,用於編譯和運行測試代碼。不會隨項目發佈。

  • system:(類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它)系統範圍,與provided類似,只是標記爲該scope的依賴包需要明確指定基於文件系統的jar包路徑。因爲需要通過systemPath指定本地jar文件路徑,所以該scope是不推薦的。如果是基於組織的,一般會建立本地鏡像,會把本地的或組織的基礎組件加入本地鏡像管理,避過使用該scope的情況

  • 作用域表:

  • 依賴範圍 對於編譯classpath有效 對於test classpath有效 對於運行時classpath 例子
    compile Y Y Y spring-core
    provided Y Y   ervlet-api
    runtime   Y Y jdbc驅動
    test   Y   junit
    system Y Y   本地maven倉庫之外的類庫

     

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