介紹
Maven的本質是一個項目管理工具,将項目開發和管理過程抽象成一個項目對象模型(POM)。開發人員隻需做一些簡單的配置,就可以批量完成項目的構建、報告和文檔的生成工作。
如果你已經有十次輸入同樣的Anttargets來編譯你的代碼、jar或者war、生成javadocs,你一定會自問,是否有一個重複性更少卻能同樣完成該工作的方法。Maven便提供了這樣一種選擇,将你的注意力從作業層轉移到項目管理層。Maven項目已經能夠知道如何構建和捆綁代碼,運行測試,生成文檔并宿主項目網頁。
Maven還提供了一套描述軟件構件和依賴的模型。采用groupId+artifactId+version的形式唯一确定一個構件,然後采用在pom文件中的dependency中描述其依賴的構件,并且依賴是可以傳遞的。在運行時根據構件的依賴描述生成一個依賴的樹形結構。并提供依賴同意構件不同版本的依賴監測工具,避免出現一個類有兩個版本導緻虛拟機加載類後出現不一緻的情況。最終達到整理整個系統依賴關系,使可重用的構件能被重用。
特點
Maven這個單詞來自于意第緒語,意為知識的積累,最早在JakataTurbine項目中它開始被用來試圖簡化構建過程。當時有很多項目,它們的Antbuild文件僅有細微的差别,而JAR文件都由CVS來維護。
于是Maven創始者開始了Maven這個項目,該項目的清晰定義包括,一種很方便的發布項目信息的方式,以及一種在多個項目中共享JAR的方式、Maven是一個項目管理工具,它包含了一個項目對象模型(ProjectObjectModel),一組标準集合,一個項目生命周期(ProjectLifecycle),一個依賴管理系統(DependencyManagementSystem),和用來運行定義在生命周期階段(phase)中插件(plugin)目标(goal)的邏輯。
當你使用Maven的時候,你用一個明确定義的項目對象模型來描述你的項目,然後Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。Maven有一個生命周期,當你運行MVNinstall的時候被調用。這條命令告訴Maven執行一系列的有序的步驟,直到到達你指定的生命周期。遍曆生命周期旅途中的一個影響就是Maven運行了許多默認的插件目标,這些目标完成了像編譯和創建一JAR件這樣的工作。
此外,Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。