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/