為什么要使用 Maven?它能幫助我們解決什么問題桶良?
1座舍、添加第三方 jar 包
??在今天的 JavaEE 開發(fā)領(lǐng)域,有大量的第三方框架和工具可以供我們使用陨帆。要使用這些 jar 包最簡單的方法就是復(fù)制粘貼到 WEB-INF/lib 目錄下曲秉。但是這會導(dǎo)致每次創(chuàng)建一個新的工程就需要將 jar 包重復(fù)復(fù)制到 lib 目錄下,從而造成工作區(qū)中存在大量重復(fù)的文件疲牵,讓我們的工程顯得很臃腫承二。
??而使用 Maven 后每個 jar 包本身只在本地倉庫中保存一份,需要 jar 包的工程只需要以坐標(biāo)的方式簡單的引用一下就可以了纲爸。不僅極大的節(jié)約了存儲空間亥鸠,讓項(xiàng)目更輕巧,更避免了重復(fù)文件太多而造成的混亂识啦。
2负蚊、jar 包之間的依賴關(guān)系
??jar 包往往不是孤立存在的,很多 jar 包都需要在其他 jar 包的支持下才能夠正常工作颓哮,我們稱之為jar 包之間的依賴關(guān)系盖桥。最典型的例子是:commons-fileupload-1.3.jar 依賴于 commons-io-2.0.1.jar,如果沒有 IO 包题翻,F(xiàn)ileUpload 包就不能正常工作揩徊。
??那么問題來了腰鬼,你知道你所使用的所有 jar 包的依賴關(guān)系嗎?當(dāng)你拿到一個新的從未使用過的 jar包塑荒,你如何得知他需要哪些 jar 包的支持呢熄赡?如果不了解這個情況,導(dǎo)入的 jar 包不夠齿税,那么現(xiàn)有的程序?qū)⒉荒苷9ぷ鞅肆颉T龠M(jìn)一步,當(dāng)你的項(xiàng)目中需要用到上百個 jar 包時凌箕,你還會人為的拧篮,手工的逐一確認(rèn)它們依賴的其他 jar 包嗎?這簡直是不可想象的牵舱。
??而引入 Maven 后串绩,Maven 就可以替我們自動的將當(dāng)前 jar 包所依賴的其他所有 jar 包全部導(dǎo)入進(jìn)來,無需人工參與芜壁,節(jié)約了我們大量的時間和精力礁凡。用實(shí)際例子來說明就是:通過 Maven 導(dǎo)入commons-fileupload-1.3.jar 后,commons-io-2.0.1.jar 會被自動導(dǎo)入慧妄,程序員不必了解這個依賴關(guān)系顷牌。
3、獲取第三方 jar 包
??JavaEE 開發(fā)中需要使用到的 jar 包種類繁多塞淹,幾乎每個 jar 包在其本身的官網(wǎng)上的獲取方式都不盡相同窟蓝。為了查找一個 jar 包找遍互聯(lián)網(wǎng),身心俱疲饱普,沒有經(jīng)歷過的人或許體會不到這種折磨疗锐。不僅如此,費(fèi)勁心血找的 jar 包里有的時候并沒有你需要的那個類费彼,或者同名的類沒有你要的方法——以不規(guī)范的方式獲取的 jar 包也往往是不規(guī)范的滑臊。
??使用 Maven 我們可以享受到一個完全統(tǒng)一規(guī)范的 jar 包管理體系。你只需要在你的項(xiàng)目中以坐標(biāo)的
方式依賴一個 jar 包箍铲,Maven 就會自動從中央倉庫進(jìn)行下載雇卷,并同時下載這個 jar 包所依賴的其他 jar 包——規(guī)范、完整颠猴、準(zhǔn)確关划!一次性解決所有問題!
4翘瓮、將項(xiàng)目拆分成多個工程模塊
??隨著 JavaEE 項(xiàng)目的規(guī)模越來越龐大贮折,開發(fā)團(tuán)隊(duì)的規(guī)模也與日俱增。一個項(xiàng)目上千人的團(tuán)隊(duì)持續(xù)開發(fā)很多年對于 JavaEE 項(xiàng)目來說再正常不過资盅。那么我們想象一下:幾百上千的人開發(fā)的項(xiàng)目是同一個 Web工程调榄。那么架構(gòu)師踊赠、項(xiàng)目經(jīng)理該如何劃分項(xiàng)目的模塊、如何分工呢每庆?這么大的項(xiàng)目已經(jīng)不可能通過package 結(jié)構(gòu)來劃分模塊筐带,必須將項(xiàng)目拆分成多個工程協(xié)同開發(fā)。多個模塊工程中有的是 Java 工程缤灵,有的是 Web 工程伦籍。那么工程拆分后又如何進(jìn)行互相調(diào)用和訪問呢?
??這就需要用到 Maven 的依賴管理機(jī)制腮出。下面是一個單獨(dú)的大項(xiàng)目拆分成多個工程之后的架構(gòu)帖鸦。
??上層模塊依賴下層,所以下層模塊中定義的 API 都可以為上層所調(diào)用和訪問胚嘲。所以借助于Maven就可以將一個項(xiàng)目拆分成多個工程作儿。
??這就是Maven能為我們解決的問題,可以配合我Maven的第一篇介紹慢逾,綜合整體的看一下,會有對Maven有更好的理解灭红。