日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven 的 Scope 区别,你知道吗?

發(fā)布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven 的 Scope 区别,你知道吗? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??點擊上方?好好學java?,選擇?星標?公眾號

重磅資訊、干貨,第一時間送達 今日推薦:一個線程池 bug 引發(fā)的 GC 思考!個人原創(chuàng)+1博客:點擊前往,查看更多 鏈接:https://segmentfault.com/a/1190000022039446

1、依賴的Scope

scope定義了類包在項目的使用階段。項目階段包括: 編譯,運行,測試和發(fā)布。

2、分類說明

compile

默認scope為compile,表示為當前依賴參與項目的編譯、測試和運行階段,屬于強依賴。打包之時,會達到包里去

test

該依賴僅僅參與測試相關的內容,包括測試用例的編譯和執(zhí)行,比如定性的Junit。

runtime

依賴僅參與運行周期中的使用。一般這種類庫都是接口與實現(xiàn)相分離的類庫,比如JDBC類庫,在編譯之時僅依賴相關的接口,在具體的運行之時,才需要具體的mysql、oracle等等數(shù)據(jù)的驅動程序。 此類的驅動都是為runtime的類庫。

provided

該依賴在打包過程中,不需要打進去,這個由運行的環(huán)境來提供,比如tomcat或者基礎類庫等等,事實上,該依賴可以參與編譯、測試和運行等周期,與compile等同。區(qū)別在于打包階段進行了exclude操作。

system

使用上與provided相同,不同之處在于該依賴不從maven倉庫中提取,而是從本地文件系統(tǒng)中提取,其會參照systemPath的屬性進行提取依賴。

import

這個是maven2.0.9版本后出的屬性,import只能在dependencyManagement的中使用,能解決maven單繼承問題,import依賴關系實際上并不參與限制依賴關系的傳遞性。

3、systemPath

當maven依賴本地而非repository中的jar包,sytemPath指明本地jar包路徑,例如:

<dependency><groupid>org.hamcrest</groupid><artifactid>hamcrest-core</artifactid><version>1.5</version><scope>system</scope><systempath>${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar</systempath> </dependency>

4、dependency中的type

引入某一個依賴時,必須指定type,這是因為用于匹配dependency引用和dependencyManagement部分的最小信息集實際上是{groupId,artifactId,type,classifier}。在很多情況下,這些依賴關系將引用沒有classifier的jar依賴。這允許我們將標識設置為{groupId,artifactId},因為type的默認值是jar,并且默認classifier為null。 type的值一般有jar、war、pom等,聲明引入的依賴的類型

5、dependency中的classifier

Classifier可能是最容易被忽略的Maven特性,但它確實非常重要,我們也需要它來幫助規(guī)劃坐標。設想這樣一個情況,有一個jar項目,就說是 dog-cli-1.0.jar 吧,運行它用戶就能在命令行上畫一只小狗出來。現(xiàn)在用戶的要求是希望你能提供一個zip包,里面不僅包含這個可運行的jar,還得包含源代碼和文檔,換句話說,這是比較正式的分發(fā)包。這個文件名應該是怎樣的呢?dog-cli-1.0.zip?不夠清楚,僅僅從擴展名很難分辨什么是Maven默認生成的構件,什么是額外配置生成分發(fā)包。如果能是dog-cli-1.0-dist.zip就最好了。這里的dist就是classifier,默認Maven只生成一個構件,我們稱之為主構件,那當我們希望Maven生成其他附屬構件的時候,就能用上classifier。常見的classifier還有如dog-cli-1.0-sources.jar表示源碼包,dog-cli-1.0-javadoc.jar表示JavaDoc包等等。 classifier它表示在相同版本下針對不同的環(huán)境或者jdk使用的jar,如果配置了這個元素,則會將這個元素名在加在最后來查找相應的jar,例如:

<classifier>jdk17</classifier> <classifier>jdk18</classifier>

總結

以上是生活随笔為你收集整理的Maven 的 Scope 区别,你知道吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。