7天學會Maven(第一天——了解 Maven)


什么是 Maven?(摘自百度百科)

Maven是Apache的一個頂級的項目:http://maven.apache.org/

Maven這個單詞來自於意第緒語,意為知識的積累,最早在Jakata Turbine項目中它被用來簡化項目的構建過程。當時有很多項目,它們的Ant build文件僅有細微的差別,而JAR文件都由CVS來維護。於是Maven創始者開始了Maven這個項目,該項目的清晰定義包括,一種很方便的發布項目信息的方式,以及一種在多個項目中共享JAR的方式。

Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標准集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后 Maven 可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。

Maven 包含一個生命周期,當你運行 mvn install 的時候被調用。這條命令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命周期。遍歷生命周期旅途中的一個影響就是,Maven 運行了許多默認的插件目標,這些目標完成了像編譯和創建一個 JAR 文件這樣的工作。

此外,Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。

Maven 能夠幫助我們干什么?

簡言之,Maven 可以幫助我們完成以下工作:

  • 項目構建
  • 文檔管理
  • 生成測試報告
  • 解決項目間依賴項
  • 源代碼版本管理
  • 項目Releases
  • 項目的分發

Maven 關鍵詞

  • Project:
    • 任何你想 build 的事物,Maven都會把它們當作是一個 Project。
    • 這些 Project 被定義為 POM(Project Object Model)。
    • 一個 Project 可以依賴其他的project,一個 project 也可以有多個子project組成。
  • POM:
    • POM(pom.xml) 是 Maven 的核心文件,它是指示 Maven 如何工作的元數據文件,類似 ant 的 build.xml 文件。
    • pom.xml 文件應該位於每個 Project 的根目錄。
  • GroupId:
    • 顧名思義,這個應該是公司名或組織名。
  • ArtifactId:
    • 構建出來的文件名,一般來說或,這個也是project名。
  • Packaging:
    • 項目打包的類型,可以是將jar、war、rar、ear、pom,默認是jar。
  • Version:
    • 項目的版本,項目的唯一標識由 groupId+artifactId+packaging+versionz 組成。
  • Dependency:
    • 為了能夠 build 或運行,一個典型的java project會依賴其他的包,在Maven中,這些被依賴的包就被稱為 dependency。
  • Plug-in:
    • Maven是有插件組織的,它的每一個功能都是由插件提供的,主要的插件是由 java 來寫的,但是他也支持 beanshell 和 ant 腳本編寫的插件。
  • Repository:
    • 倉庫用來存放artifact的,可以是本地倉庫,也可以是遠程倉庫,Maven是由一個默認的倉庫
  • Snapshot:
    • 工程中可以(也應該)有這樣一個特殊的版本:這個版本可以告訴Maven,該工程正在處於開發階段,會經常更新(但還為發布)。當其他工程依賴此類型的artifact時,Maven會在倉庫中尋找該artifact的最新版本,並自動下載、使用該最新版本。

Maven 常見命令

 

mvn archetype:create 創建Maven項目
mvn compile 編譯源代碼
mvn test 運行應用程序中的單元測試
mvn install 在本地Respository中安裝jar
mvn eclipse:eclipse 生成eclipse項目文件
mvn jetty:run 啟動jetty服務
mvn clean 清除項目目錄中的生成結果
mvn site 生成項目相關信息的網站
mvn package 根據項目生成的jar

Maven的默認生命周期

Default Lifecycle 生命周期階段 描述
validate 驗證 確保當前配置和 POM 的內容是有效的。這包含對 pom.xml 文件樹的驗證。
initialize 初始化 在執行構建生命周期的主任務之前可以進行初始化。
generate-sources 生成源碼 代碼生成器可以開始生成在以后階段中處理或編譯的源代碼。
process-sources 處理源碼 提供解析、修改和轉換源碼。常規源碼和生成的源碼都可以在這里處理。
generate-resources 生成資源 可以生成非源碼資源。通常包括元數據文件和配置文件。
process-resources 處理資源 處理非源碼資源。修改、轉換和重定位資源都能在這階段發生。
compile 編譯 編譯源碼。編譯過的類被放到目標目錄樹中。
process-classes 處理類 處理類文件轉換和增強步驟。字節碼交織器和常用工具常在這一階段操作。
generate-test-sources 生成測試源碼 mojo 可以生成要操作的單元測試代碼。
process-test-sources 處理測試源碼 在編譯前對測試源碼執行任何必要的處理。在這一階段,可以修改、轉換或復制源代碼。
generate-test-resources 生成測試資源

允許生成與測試相關的(非源碼)資源。

process-test-resources 處理測試資源 可以處理、轉換和重新定位與測試相關的資源。
test-compile 測試編譯 編譯單元測試的源碼。
process-test-classes
對測試編譯生成的文件做后期處理(需Maven2.0.5及以上)
test 測試 運行編譯過的單元測試並累計結果。
prepare-package
執行打包前的所有操作(需Maven2.1及以上)
package 打包 將可執行的二進制文件打包到一個分布式歸檔文件中,如 JAR 或 WAR。
pre-integration-test 前集成測試 准備集成測試。這種情況下的集成測試是指在一個受到一定控制的模擬的真
實部署環境中測試代碼。這一步能將歸檔文件部署到一個服務器上執行。
integration-test 集成測試 執行真正的集成測試。
post-integration-test 后集成測試 解除集成測試准備。這一步涉及測試環境重置或重新初始化。
verify 檢驗 檢驗可部署歸檔的有效性和完整性。過了這個階段,將安裝該歸檔。
install 安裝 將該歸檔添加到本地 Maven 目錄。這一步讓其他可能依賴該歸檔的模塊可以使用它。
deploy 部署

將該歸檔添加到遠程 Maven 目錄。這一步讓這個工件能為更多的人所用。

 

在 Eclipse中 使用 Maven

Eclipse的Maven插件m2eclipse:http://www.sonatype.org/m2eclipse/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM