Maven是什么?
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
(Apache Maven是一個軟件項目管理和理解工具。基于項目對象模型思想,Maven可以管理一個項目的構(gòu)建、報告和信息中心文檔)
Maven 是一個項目管理和整合工具。作為Apache組織中的一個頗為成功的開源項目,Maven主要服務(wù)于基于Java平臺的項目構(gòu)建、依賴管理和項目信息管理。無論是小型的開源類庫項目,還是大型的企業(yè)級應(yīng)用;無論是傳統(tǒng)的瀑布式開發(fā),還是流行的敏捷模式,Maven都能大顯身手。
Maven為開發(fā)者提供了一套完整的構(gòu)建生命周期框架。開發(fā)團隊幾乎不用花多少時間就能夠自動完成工程的基礎(chǔ)構(gòu)建配置,因為Maven使用了一個標(biāo)準(zhǔn)的目錄結(jié)構(gòu)和一個默認(rèn)的構(gòu)建生命周期。
Maven能夠幫助開發(fā)者完成以下工作:
- 構(gòu)建
- 文檔生成
- 報告
- 依賴
- SCMs
- 發(fā)布
- 分發(fā)
- 郵件列表
總的來說,Maven簡化了工程的構(gòu)建過程,并對其標(biāo)準(zhǔn)化。它無縫銜接了編譯、發(fā)布、文檔生成、團隊合作和其他任務(wù)。Maven提高了重用性,負(fù)責(zé)了大部分構(gòu)建相關(guān)任務(wù)。
Maven的目標(biāo)
Maven的主要目的是為開發(fā)者提供
- 一個可復(fù)用、可維護、更易理解的工程綜合模型
- 與這個模型交互的插件或者工具
Maven工程結(jié)構(gòu)和內(nèi)容被定義在一個xml文件中-pom.xml,是Project Object Model(POM)的簡稱,此文件是整個Maven系統(tǒng)的基礎(chǔ)組件。
約定優(yōu)于配置
Maven使用約定而不是配置,意味著開發(fā)者不需要再自己創(chuàng)建構(gòu)建過程。
開發(fā)者不需要再關(guān)心每一個配置細(xì)節(jié)。Maven為工程提供了合理的默認(rèn)行為。當(dāng)創(chuàng)建Maven工程時,Maven會創(chuàng)建默認(rèn)的工程結(jié)構(gòu)。開發(fā)者只需要合理的放置文件,而在pom.xml中不再需要定義任何配置。
下表展示了工程源碼文件、資源文件的默認(rèn)配置,和其他一些配置。假定${basedir}表示工程目錄:
配置項 | 默認(rèn)值 |
---|---|
source code | ${basedir}/src/main/java |
resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Complied byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
為了構(gòu)建工程,Maven為開發(fā)者提供了選項來配置生命周期目標(biāo)和工程依賴(依賴于Maven的插件擴展功能和默認(rèn)的約定)。大部分的工程管理和構(gòu)建相關(guān)的任務(wù)是由Maven插件完成的。
開發(fā)人員不需要了解每個插件是如何工作的,就能夠構(gòu)建任何給定的Maven工程。詳細(xì)內(nèi)容參考Maven插件部分。
參考資料
- http://maven.apache.org/
- 《Maven實戰(zhàn)》 徐曉斌 著;
- 《Maven教程》 極客學(xué)院;
歡迎訪問個人博客:http://www.ycyoes.com