不得不熟悉的自動(dòng)化構(gòu)建工具M(jìn)aven

1.Maven 中的坐標(biāo):

類(lèi)比數(shù)學(xué)中,平面x y軸,空間x y z軸可以確定到唯一的一個(gè)點(diǎn)
那么在Maven中,使用下面三個(gè)向量可以唯一地定位倉(cāng)庫(kù)中的任何一個(gè)點(diǎn)。

  • groupId:公司或組織域名倒序 + 項(xiàng)目名
    <groupid>com.ys.maven</groupid>
  • artifactId:項(xiàng)目名
    <artifactid>Maven_05</artifactid>
  • version:版本號(hào)
    <version>0.0.1-SNAPSHOT</version>

2.Maven 依賴的詳細(xì)配置講解:

全部配置如下

<project>     
    <dependencies>
        <dependency>
            <groupId>io.springfox</groupId>     
            <artifactId>springfox-swagger2</artifactId>     
            <version>3.8.1</version>
            <type>...</type>
            <scope>...</scope>
            <optional>...</optional>
            <exclusions>     
                <exclusion>     
                  <groupId>...</groupId>     
                  <artifactId>...</artifactId>     
                </exclusion>
          </exclusions>     
        </dependency>        
      </dependencies>     
</project>

①、dependencies:一個(gè) pom.xml 文件中只能存在一個(gè)這樣的標(biāo)簽。用來(lái)管理依賴的總標(biāo)簽。
②、dependency:包含在dependencies標(biāo)簽中,可以有無(wú)數(shù)個(gè),每一個(gè)表示一個(gè)依賴
③、groupId,artifactId和version:依賴的基本坐標(biāo),對(duì)于任何一個(gè)依賴來(lái)說(shuō),基本坐標(biāo)是最重要的,Maven根據(jù)坐標(biāo)才能找到需要的依賴。
④、type:依賴的類(lèi)型,對(duì)應(yīng)于項(xiàng)目坐標(biāo)定義的packaging。大部分情況下,該元素不必聲明,其默認(rèn)值是jar。
⑤、scope:依賴的范圍,默認(rèn)值是 compile。后面會(huì)進(jìn)行詳解。
⑥、optional:標(biāo)記依賴是否可選。
⑦、exclusions:用來(lái)排除傳遞性依賴,后面會(huì)進(jìn)行詳細(xì)介紹。

3.Maven 依賴范圍以及區(qū)別:

compile 范圍依賴(maven的默認(rèn)依賴范圍)

  • 參與編譯時(shí)是否對(duì)主程(src/main/java)序有效:有效
  • 參與編譯時(shí)是否對(duì)測(cè)試(src/test/java)程序有效:有效
  • 是否參與打包:參與
  • 是否參與部署:參與

test范圍依賴 eg:junit單元測(cè)試jar

  • 參與編譯時(shí)是否對(duì)主程(src/main/java)序有效:無(wú)效
  • 參與編譯時(shí)是否對(duì)測(cè)試(src/test/java)程序有效:有效
  • 是否參與打包:不參與
  • 是否參與部署:不參與

provided 范圍依賴 eg:一些服務(wù)器自帶的jar無(wú)需另外提供 servlet-api.jar

  • 參與編譯時(shí)是否對(duì)主程(src/main/java)序有效:有效
  • 參與編譯時(shí)是否對(duì)測(cè)試(src/test/java)程序有效:有效
  • 是否參與打包:不參與
  • 是否參與部署:不參與

runtime 范圍依賴

  • 只在測(cè)試、運(yùn)行的時(shí)候依賴,在編譯的時(shí)候不依賴。例如:JDBC驅(qū)動(dòng),項(xiàng)目代碼只需要jdk提供的jdbc接口,只有在執(zhí)行測(cè)試和運(yùn)行項(xiàng)目的時(shí)候才需要實(shí)現(xiàn)jdbc的功能。

4.Maven 依賴傳遞性:

①、當(dāng)?shù)诙蕾嚨姆秶莄ompile的時(shí)候,傳遞性依賴的范圍與第一直接依賴的范圍一致。
②、當(dāng)?shù)诙苯右蕾嚨姆秶莟est的時(shí)候,依賴不會(huì)得以傳遞。
③、當(dāng)?shù)诙蕾嚨姆秶莗rovided的時(shí)候,只傳遞第一直接依賴范圍也為provided的依賴,且傳遞性依賴的范圍同樣為 provided;
④、當(dāng)?shù)诙苯右蕾嚨姆秶莚untime的時(shí)候,傳遞性依賴的范圍與第一直接依賴的范圍一致,但compile例外,此時(shí)傳遞的依賴范圍為runtime;

5.Maven 可選依賴:

  • maven默認(rèn)是按照依賴范圍來(lái)進(jìn)行依賴傳遞的(上面依賴傳遞已經(jīng)說(shuō)明四種依賴范圍的傳遞性)
  • 假如你不想jar包依賴下去 你可以設(shè)置Optional標(biāo)簽屬性,默認(rèn)是false。如果為true,則表示該依賴不會(huì)傳遞下去,如果為false,則會(huì)傳遞下去。

6.Maven 依賴排除:

使用exclusions來(lái)進(jìn)行依賴排除,可以用來(lái)防止jar包沖突

例如我們?cè)诘谝还こ桃肓藄pring-core.jar包 它會(huì)默認(rèn)引入common-logging.jar 假如我們不需要common-logging.jar 可以使用exclusions來(lái)進(jìn)行依賴排除:

   <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.3.24.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

7.Maven 依賴沖突問(wèn)題:

在maven中存在兩種沖突 一種是同pom文件沖突,一種是跨pom文件沖突

  • 跨pom文件jar沖突,這種情況會(huì)優(yōu)先選擇最短路徑的jar
    假如我有三個(gè)maven工程 依次依賴 第三依賴第二,第二依賴第一
    現(xiàn)在我在第二和第一中同時(shí)引入一樣的jar 這時(shí)候第三maven工程會(huì)同時(shí)
    優(yōu)選選擇他最近依賴的工程二中的jar
  • 同pom文件中的則是先聲明先依賴(注意 pom文件越往下越早依賴)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,273評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,870評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,742評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,527評(píng)論 6 407
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,010評(píng)論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,250評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,769評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,656評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,853評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,103評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,472評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,717評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,487評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,815評(píng)論 2 372

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

  • Maven是Apache軟件基金會(huì)的一個(gè)開(kāi)源項(xiàng)目,用來(lái)處理Java工程的自動(dòng)化構(gòu)建,它有兩個(gè)主要特征: 構(gòu)建 自動(dòng)...
    書(shū)上得來(lái)終覺(jué)淺閱讀 2,572評(píng)論 1 7
  • 1、什么是坐標(biāo)? ①、數(shù)學(xué)中的坐標(biāo) 在平面上,使用 X 、Y 兩個(gè)向量可以唯一的定位平面中的任何一個(gè)點(diǎn) 在空間中,...
    goldfather閱讀 766評(píng)論 0 0
  • Maven的基本了解 什么是Maven? Maven就是Apache下的一個(gè)開(kāi)源項(xiàng)目。它是用純java開(kāi)發(fā)的。是一...
    Bcome閱讀 2,847評(píng)論 0 7
  • 一、maven的兩個(gè)作用 項(xiàng)目自動(dòng)化構(gòu)建,通過(guò)命令行就可以完成整個(gè)項(xiàng)目構(gòu)建過(guò)程,不需要我們手動(dòng)地進(jìn)行項(xiàng)目構(gòu)建 管理...
    lifeline張閱讀 856評(píng)論 0 1
  • [意識(shí)流] [黑藍(lán)同人多cp] [作者腦洞太大] [如不接受多cp可跳著章節(jié)看,ex買(mǎi)火柴的小男孩1,2,3] [...
    煙溫穆塵閱讀 322評(píng)論 0 0