Maven 教學

Maven 翻譯為"專家"、"內行",是 Apache 下的一個純 Java 開發的開源專案。基於專案對象模型(縮寫:POM)概念,Maven利用一個中央資訊片斷能管理一個專案的構建、報告和文檔等步驟。
Maven 是一個專案管理工具,可以對 Java 專案進行構建、依賴管理。
Maven 也可被用於構建和管理各種專案,例如 C#,Ruby,Scala 和其他語言編寫的專案。Maven 曾是 Jakarta 專案的子項目,現為由 Apache 軟體基金會主持的獨立 Apache 專案。
閱讀本教程前,您需要瞭解的知識
本教程主要針對初學者,幫助他們學習 Maven 工具的基本功能。完成本教學的學習後你的 Apache Maven 的專業知識將達到中等水準,隨後你可以學習更高級的知識了。
閱讀本教程,您需要有以下基礎:Java 基礎。
Maven 功能
Maven 能夠幫助開發者完成以下工作:
- 構建
- 文檔生成
- 報告
- 依賴
- SCMs
- 發佈
- 分發
- 郵件列表
約定配置
Maven 提倡使用一個共同的標準目錄結構,Maven 使用約定優於配置的原則,大家盡可能的遵守這樣的目錄結構。如下所示:
目錄 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有的子目錄 |
${basedir}/src/main/java | 專案的java源代碼 |
${basedir}/src/main/resources | 專案的資源,比如說property檔,springmvc.xml |
${basedir}/src/test/java | 專案的測試類,比如說Junit代碼 |
${basedir}/src/test/resources | 測試用的資源 |
${basedir}/src/main/webapp/WEB-INF | web應用文件目錄,web專案的資訊,比如存放web.xml、本地圖片、jsp視圖頁面 |
${basedir}/target | 打包輸出目錄 |
${basedir}/target/classes | 編譯輸出目錄 |
${basedir}/target/test-classes | 測試編譯輸出目錄 |
Test.java | Maven只會自動運行符合該命名規則的測試類 |
~/.m2/repository | Maven默認的本地倉庫目錄位置 |
Maven 特點
專案設置遵循統一的規則。
任意工程中共享。
依賴管理包括自動更新。
一個龐大且不斷增長的庫。
可擴展,能夠輕鬆編寫 Java 或腳本語言的插件。
只需很少或不需要額外配置即可即時訪問新功能。
基於模型的構建 − Maven能夠將任意數量的專案構建到預定義的輸出類型中,如 JAR,WAR 或基於專案元數據的分發,而不需要在大多數情況下執行任何腳本。
專案資訊的一致性站點 − 使用與構建過程相同的元數據,Maven 能夠生成一個網站或PDF,包括您要添加的任何文檔,並添加到關於專案開發狀態的標準報告中。
發佈管理和發佈單獨的輸出 − Maven 將不需要額外的配置,就可以與源代碼管理系統(如 Subversion 或 Git)集成,並可以基於某個標籤管理專案的發佈。它也可以將其發佈到分發位置供其他專案使用。Maven 能夠發佈單獨的輸出,如 JAR,包含其他依賴和文檔的歸檔,或者作為源代碼發佈。
向後相容性 − 您可以很輕鬆的從舊版本 Maven 的多個模組移植到 Maven 3 中。
子項目使用父專案依賴時,正常情況子項目應該繼承父專案依賴,無需使用版本號,
並行構建 − 編譯的速度能普遍提高20 - 50 %。
更好的錯誤報告 − Maven 改進了錯誤報告,它為您提供了 Maven wiki 頁面的鏈接,您可以點擊鏈接查看錯誤的完整描述。