Maven詳解(一)------ Maven概述

1、引言
你能搜到這個(gè)教程,說明你對(duì) Maven 感興趣,但是又不是太理解。那么接下來這個(gè)系列的教程將會(huì)詳細(xì)講解 Maven 的用法,相信你看完之后,一定能對(duì) Maven 的理解更進(jìn)一步!
?
2、常規(guī)項(xiàng)目開發(fā)存在的問題
通常Web項(xiàng)目開發(fā)只會(huì)創(chuàng)建一個(gè)工程,然后所有的jar包都會(huì)存放到 WEB-INF/lib 目錄下,如下圖所示:
?

通過上面的目錄結(jié)構(gòu)我們可以分析出如下問題:
?、?、一個(gè)項(xiàng)目就是一個(gè)web工程。如果項(xiàng)目比較龐大,那么利用包名package來劃分模塊,顯然容易造成混淆而且不利于分工合作;
?、凇㈨?xiàng)目中需要的 jar 包必須手動(dòng) 復(fù)制,粘貼 到 WEB-INF/lib 目錄下。這會(huì)導(dǎo)致每創(chuàng)建一個(gè)新的工程就需要將 jar 包重復(fù)復(fù)制到 lib 目錄下,從而造成工作區(qū)存在大量重復(fù)的文件;
?、邸ar需要我們手動(dòng)去官網(wǎng)上或者其他途徑下載;
?、?、一個(gè) jar 包依賴的其他 jar 包,需要自己手動(dòng)加入到項(xiàng)目中,而且很有可能我們漏掉了某個(gè)依賴關(guān)系,導(dǎo)致項(xiàng)目運(yùn)行報(bào)錯(cuò)。
? 那么如何解決這些問題呢?本系列的主角 Maven 應(yīng)運(yùn)而生了。
3、什么是 Maven ?
Maven 讀音是?[?mev?n],也就是“霉文”,而不是讀“馬文”。它是一個(gè)項(xiàng)目管理和綜合工具,Maven使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu)和默認(rèn)構(gòu)建生命周期。提供了開發(fā)人員構(gòu)建一個(gè)完整的生命周期框架,開發(fā)團(tuán)隊(duì)可以自動(dòng)完成該項(xiàng)目的基礎(chǔ)設(shè)施建設(shè)。相信如果對(duì) Maven 沒有任何了解的,看了這段話等于沒看,不過沒關(guān)系,后面我們將會(huì)逐漸揭開 Maven 的神秘面紗。什么是 Maven,你只需要知道這玩意能簡(jiǎn)化和標(biāo)準(zhǔn)化項(xiàng)目建設(shè)過程。
4、Maven 的歷史
Maven的最初設(shè)計(jì),以簡(jiǎn)化Jakarta Turbine項(xiàng)目的建設(shè)進(jìn)程。有幾個(gè)項(xiàng)目,每個(gè)項(xiàng)目包含了稍微不同的Ant構(gòu)建文件。 JAR中檢查到CVS。Apache組織開發(fā)的Maven可以建立多個(gè)項(xiàng)目,發(fā)布項(xiàng)目信息,項(xiàng)目部署。
5、Maven 的目標(biāo)
Maven主要目標(biāo)是提供開發(fā)人員
?、佟㈨?xiàng)目是可重復(fù)使用,易維護(hù),更容易理解的一個(gè)綜合模型。
?、?、插件或交互的工具,這種聲明性的模式。
Maven項(xiàng)目的結(jié)構(gòu)和內(nèi)容是在一個(gè)XML文件中聲明,pom.xml的項(xiàng)目對(duì)象模型(POM),這是整個(gè)Maven系統(tǒng)的基本單元?! ?/p>
6、Maven 的理念
約定優(yōu)于配置?。?!
開發(fā)人員不需要?jiǎng)?chuàng)建構(gòu)建過程本身,不必知道提到的每一個(gè)配置的詳細(xì)信息。Maven提供了合理的默認(rèn)行為的項(xiàng)目。創(chuàng)建一個(gè)Maven項(xiàng)目時(shí),Maven創(chuàng)建默認(rèn)的項(xiàng)目結(jié)構(gòu)。開發(fā)者只需要把相應(yīng)的文件和她需要在pom.xml中定義即可。
那么如何使用 Maven 呢?請(qǐng)看下回分解。