一逮京、Maven簡(jiǎn)介
Maven在美國(guó)口語(yǔ)中是專(zhuān)家疯潭、內(nèi)行
的意思概说,是Apache
下的一個(gè)純 Java 開(kāi)發(fā)的開(kāi)源項(xiàng)目≌痃裕基于項(xiàng)目對(duì)象模型Project Object Model
(縮寫(xiě):POM)概念赂毯,Maven利用一個(gè)中央信息片斷能管理一個(gè)項(xiàng)目的構(gòu)建、報(bào)告和文檔等步驟拣宰。
Maven是一個(gè)項(xiàng)目管理工具党涕,它包含了一個(gè)項(xiàng)目對(duì)象模型 (POM:Project Object Model),一組標(biāo)準(zhǔn)集合巡社,一個(gè)項(xiàng)目生命周期(Project Lifecycle)膛堤,一個(gè)依賴管理系統(tǒng)(Dependency Management System),和用來(lái)運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯晌该。
由于Maven是用Java開(kāi)發(fā)的肥荔,因此Maven被更多的用于Java項(xiàng)目中,但也可以使用其它工具來(lái)構(gòu)建項(xiàng)目朝群。
二燕耿、Maven的功能
Maven 能夠幫助開(kāi)發(fā)者完成以下工作:
- 構(gòu)建
- 測(cè)試
- 文檔生成
- 報(bào)告
- 依賴
- SCMs
- 發(fā)布
- 分發(fā)
- 郵件列表
三、約定配置
Maven 提倡使用一個(gè)共同的標(biāo)準(zhǔn)目錄結(jié)構(gòu)潜圃,Maven 使用約定優(yōu)于配置的原則缸棵,大家盡可能的遵守這樣的目錄結(jié)構(gòu)。如下所示:
注:如果不是webApp項(xiàng)目將不會(huì)存在webapp目錄谭期,其余約定將在后文介紹堵第。
四、Maven 特點(diǎn)
- 項(xiàng)目設(shè)置遵循統(tǒng)一的規(guī)則隧出。
- 任意工程中共享踏志。
- 依賴管理包括自動(dòng)更新。
- 一個(gè)龐大且不斷增長(zhǎng)的庫(kù)胀瞪。
- 可擴(kuò)展针余,能夠輕松編寫(xiě) Java 或腳本語(yǔ)言的插件饲鄙。
- 只需很少或不需要額外配置即可即時(shí)訪問(wèn)新功能。
- 基于模型的構(gòu)建 ? Maven能夠?qū)⑷我鈹?shù)量的項(xiàng)目構(gòu)建到預(yù)定義的輸出類(lèi)型中圆雁,如 JAR忍级,WAR 或基于項(xiàng)目元數(shù)據(jù)的分發(fā),而不需要在大多數(shù)情況下執(zhí)行任何腳本伪朽。
- 項(xiàng)目信息的一致性站點(diǎn) ? 使用與構(gòu)建過(guò)程相同的元數(shù)據(jù)轴咱,Maven 能夠生成一個(gè)網(wǎng)站或PDF,包括您要添加的任何文檔烈涮,并添加到關(guān)于項(xiàng)目開(kāi)發(fā)狀態(tài)的標(biāo)準(zhǔn)報(bào)告中朴肺。
- 發(fā)布管理和發(fā)布發(fā)布 ? Maven 將不需要額外的配置,就可以與源代碼管理系統(tǒng)(如 Subversion 或 Git)集成坚洽,并可以基于某個(gè)標(biāo)簽管理項(xiàng)目的發(fā)布戈稿。它也可以將其發(fā)布到分發(fā)位置供其他項(xiàng)目使用。Maven能夠發(fā)布單獨(dú)的輸出讶舰,如 JAR鞍盗,包含其他依賴和文檔的歸檔,或者作為源代碼發(fā)布跳昼。
- 向后兼容性 ? 您可以很輕松的從舊版本 Maven 的多個(gè)模塊移植到 Maven 3 中橡疼。
- 子項(xiàng)目使用父項(xiàng)目依賴時(shí),正常情況子項(xiàng)目應(yīng)該繼承父項(xiàng)目依賴庐舟,無(wú)需使用版本號(hào),
- 并行構(gòu)建 ? 編譯的速度能普遍提高20 - 50 %住拭。
- 更好的錯(cuò)誤報(bào)告 ? Maven 改進(jìn)了錯(cuò)誤報(bào)告挪略,它為您提供了 Maven wiki 頁(yè)面的鏈接,您可以點(diǎn)擊鏈接查看錯(cuò)誤的完整描述滔岳。