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 頁面的連結,您可以點選連結檢視錯誤的完整描述。