Maven scope依賴范圍

一栖榨、Maven scope依賴范圍概覽

Maven的生命周期存在編譯昆汹、測(cè)試、運(yùn)行這些過程,那么顯然有些依賴只用于測(cè)試婴栽,比如junit满粗;有些依賴編譯用不到,只有運(yùn)行的時(shí)候才能用到居夹,比如mysql的驅(qū)動(dòng)包在編譯期就用不到(編譯期用的是JDBC接口)败潦,而是在運(yùn)行時(shí)用到的;還有些依賴准脂,編譯期要用到劫扒,而運(yùn)行期不需要提供,因?yàn)橛行┤萜饕呀?jīng)提供了狸膏,比如servlet-api在tomcat中已經(jīng)提供了沟饥,我們只需要的是編譯期提供而已。總結(jié)說來贤旷,在POM 4中广料,<dependency>中還引入了<scope>,它主要管理依賴的部署幼驶。大致有compile艾杏、provided、runtime盅藻、test购桑、system等幾個(gè)。

  • compile:默認(rèn)的scope氏淑,運(yùn)行期有效勃蜘,需要打入包中

  • provided:編譯期有效,運(yùn)行期不需要提供假残,不會(huì)打入包中

  • runtime:編譯不需要缭贡,在運(yùn)行期有效,需要導(dǎo)入包中辉懒。(接口與實(shí)現(xiàn)分離)

  • test:測(cè)試需要阳惹,不會(huì)打入包中

  • system:非本地倉(cāng)庫(kù)引入、存在系統(tǒng)的某個(gè)路徑下的jar耗帕。(一般不使用)

二穆端、scope依賴范圍詳解

2.1 compile

默認(rèn)就是compile,什么都不配置也就是意味著compile仿便。compile表示被依賴項(xiàng)目需要參與當(dāng)前項(xiàng)目的編譯体啰,當(dāng)然后續(xù)的測(cè)試,運(yùn)行周期也參與其中嗽仪,是一個(gè)比較強(qiáng)的依賴荒勇。打包的時(shí)候通常需要包含進(jìn)去,該依賴需要參與當(dāng)前項(xiàng)目的編譯闻坚、測(cè)試沽翔、運(yùn)行、打包窿凤。

2.2 provided

provided 表明該依賴已經(jīng)提供仅偎,故只在未提供時(shí)才被使用,應(yīng)用場(chǎng)景是你定義了一個(gè)Servlet雳殊,此刻得需要Servlet-api.jar 才能編譯成功橘沥,但是當(dāng)你達(dá)成war 包時(shí),你并不想將 Servlet-api.jar 包進(jìn)去夯秃,因?yàn)門omcat等容器會(huì)提供跟compile 類似座咆,說明JDK痢艺、容器或使用者會(huì)提供這個(gè)依賴,如Servlet.jar介陶。這個(gè)依賴只作用在** 編譯和測(cè)試堤舒,該依賴會(huì)由系統(tǒng)組件提供,不需手動(dòng)添加哺呜,只存在編譯舌缤、運(yùn)行、測(cè)試階段弦牡,打包是不用包進(jìn)去友驮,打包階段做了exclude**動(dòng)作漂羊。provided意味著打包的時(shí)候可以不用包進(jìn)去驾锰,別的設(shè)施(Web Container)會(huì)提供。

2.3 runtime

runntime表示被依賴項(xiàng)目無需參與項(xiàng)目的編譯走越,不過后期的測(cè)試和運(yùn)行周期需要其參與椭豫。與compile相比,跳過編譯而已旨指,比如赏酥,你可能在編譯的時(shí)候只需要JDBC API JAR,而只有在運(yùn)行的時(shí)候才需要JDBC驅(qū)動(dòng)實(shí)現(xiàn)谆构。編譯時(shí)該包不參與裸扶,運(yùn)行時(shí)參與。

2.4 test

test范圍依賴 在一般的編譯和運(yùn)行時(shí)都不需要搬素,它們只有在測(cè)試編譯和測(cè)試運(yùn)行階段可用呵晨。

2.5 system

被依賴項(xiàng)不會(huì)從maven倉(cāng)庫(kù)下載,而是從本地系統(tǒng)指定路徑下尋找熬尺,需要 systemPath 屬性system范圍依賴與provided 類似摸屠,但是你必須顯式的提供一個(gè)對(duì)于本地系統(tǒng)中JAR 文件的路徑,這么做是為了允許基于本地對(duì)象編譯粱哼,而這些對(duì)象是系統(tǒng)類庫(kù)的一部分季二。這樣的構(gòu)件應(yīng)該是一直可用的,Maven 也不會(huì)在倉(cāng)庫(kù)中去尋找它從參與度來說揭措,與provided相同胯舷,不過被依賴項(xiàng)不會(huì)從maven倉(cāng)庫(kù)抓,而是從本地文件系統(tǒng)拿绊含,一定需要配合systemPath屬性使用桑嘶,例如:

<!-- 引入本地jar -->
 <dependency>
     <groupId>com.oppo</groupId>
      <artifactId>opush-server-sdk</artifactId>
      <version>1.0.6</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/src/main/resources/lib/opush-server-sdk-1.0.6.jar</systemPath>
</dependency>


<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

三、maven預(yù)定義內(nèi)置屬性

  • ${basedir}表示項(xiàng)目根目錄,即包含pom.xml文件的目錄;

  • ${version}表示項(xiàng)目版本;

  • ${project.basedir}同${basedir};

  • ${project.baseUri}表示項(xiàng)目文件地址;

  • ${maven.build.timestamp}表示項(xiàng)目構(gòu)件開始時(shí)間;

  • ${maven.build.timestamp.format}表示屬性${maven.build.timestamp}的展示格式,默認(rèn)值為yyyyMMdd-HHmm,可自定義其格式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艺挪,一起剝皮案震驚了整個(gè)濱河市不翩,隨后出現(xiàn)的幾起案子兵扬,更是在濱河造成了極大的恐慌,老刑警劉巖口蝠,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件器钟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妙蔗,警方通過查閱死者的電腦和手機(jī)傲霸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眉反,“玉大人昙啄,你說我怎么就攤上這事〈缥澹” “怎么了梳凛?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)梳杏。 經(jīng)常有香客問我韧拒,道長(zhǎng),這世上最難降的妖魔是什么十性? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任叛溢,我火速辦了婚禮,結(jié)果婚禮上劲适,老公的妹妹穿的比我還像新娘楷掉。我一直安慰自己,他們只是感情好霞势,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布烹植。 她就那樣靜靜地躺著,像睡著了一般支示。 火紅的嫁衣襯著肌膚如雪刊橘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天颂鸿,我揣著相機(jī)與錄音促绵,去河邊找鬼。 笑死嘴纺,一個(gè)胖子當(dāng)著我的面吹牛败晴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栽渴,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼尖坤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了闲擦?” 一聲冷哼從身側(cè)響起慢味,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤场梆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后纯路,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體或油,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年驰唬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顶岸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叫编,死狀恐怖辖佣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搓逾,我是刑警寧澤卷谈,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站恃逻,受9級(jí)特大地震影響雏搂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寇损,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裳食。 院中可真熱鬧,春花似錦诲祸、人聲如沸浊吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)找田。三九已至墩衙,卻和暖如春漆改,著一層夾襖步出監(jiān)牢的瞬間挫剑,已是汗流浹背愉棱。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工哲戚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留档押,地道東北人令宿。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像簇爆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子响蓉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容