Maven 插件
maven 插件
maven 有以下三個標(biāo)準(zhǔn)的生命周期:
- clean:項目清理的處理
- default(或 build):項目部署的處理
- site:項目站點文檔創(chuàng)建的處理
每個生命周期中都包含著一系列的階段(phase)。這些 phase 就相當(dāng)于 maven 提供的統(tǒng)一的接口,然后這些 phase 的實現(xiàn)由 maven 的插件來完成。
我們在輸入 mvn 命令的時候 比如 mvn clean,clean 對應(yīng)的就是 clean 生命周期中的 clean 階段。但是 clean 的具體操作是由 maven-clean-plugin 來實現(xiàn)的。
所以說 maven 生命周期的每一個階段的具體實現(xiàn)都是由 maven 插件實現(xiàn)的。
maven 實際上是一個依賴插件執(zhí)行的框架,每個任務(wù)實際上是由插件完成。maven 插件通常被用來:
- 創(chuàng)建 jar 文件
- 創(chuàng)建 war 文件
- 編譯代碼文件
- 代碼單元測試
- 創(chuàng)建工程文檔
- 創(chuàng)建工程報告
插件通常提供了一個目標(biāo)的集合,并且可以使用下面的語法執(zhí)行:
<code>mvn [plugin-name]:[goal-name]</code>
例如,一個 java 工程可以使用 maven-compiler-plugin 的 compile-goal 編譯,使用以下命令:
<code>mvn compiler:compile</code>
1. 插件類型:
maven 提供了下面兩種類型的插件:
類型 | 描述 |
---|---|
build plugins | 在構(gòu)建時執(zhí)行,并在 pom.xml 的 元素中配置。 |
reporting plugins | 在網(wǎng)站生成過程中執(zhí)行,并在 pom.xml 的 元素中配置。 |
下面是一些常用插件的列表:
插件 | 描述 |
---|---|
clean | 構(gòu)建之后清理目標(biāo)文件。刪除目標(biāo)目錄。 |
compiler | 編譯 java 源文件。 |
surefile | 運(yùn)行 junit 單元測試。創(chuàng)建測試報告。 |
jar | 從當(dāng)前工程中構(gòu)建 jar 文件。 |
war | 從當(dāng)前工程中構(gòu)建 war 文件。 |
javadoc | 為工程生成 javadoc。 |
antrun | 從構(gòu)建過程的任意一個階段中運(yùn)行一個 ant 任務(wù)的集合。 |
2. 插件范例
我們已經(jīng)在我們的例子中大量使用了 maven-antrun-plugin 來輸出數(shù)據(jù)到控制臺上。讓我們用一種更好的方式理解這部分內(nèi)容,在 c:\mvn\project 目錄下創(chuàng)建一個 pom.xml 文件。
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.companyname.projectgroup</groupid> <artifactid>project</artifactid> <version>1.0</version> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-antrun-plugin</artifactid> <version>1.1</version> <executions> <execution> <id>id.clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>clean phase</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
接下來,打開命令終端跳轉(zhuǎn)到 pom.xml 所在的目錄,并執(zhí)行下面的 mvn 命令。
mvn clean
maven 將開始處理并顯示 clean 生命周期的 clean 階段。
[info] scanning for projects... [info] ------------------------------------------------------------------ [info] building unnamed - com.companyname.projectgroup:project:jar:1.0 [info] task-segment: [post-clean] [info] ------------------------------------------------------------------ [info] [clean:clean {execution: default-clean}] [info] [antrun:run {execution: id.clean}] [info] executing tasks [echo] clean phase [info] executed tasks [info] ------------------------------------------------------------------ [info] build successful [info] ------------------------------------------------------------------ [info] total time: < 1 second [info] finished at: sat jul 07 13:38:59 ist 2012 [info] final memory: 4m/44m [info] ------------------------------------------------------------------
上面的例子展示了以下關(guān)鍵概念:
- 插件是在 pom.xml 中使用 plugins 元素定義的。
- 每個插件可以有多個目標(biāo)。
- 你可以定義階段,插件會使用它的 phase 元素開始處理。我們已經(jīng)使用了 clean 階段。
- 你可以通過綁定到插件的目標(biāo)的方式來配置要執(zhí)行的任務(wù)。我們已經(jīng)綁定了 echo 任務(wù)到 maven-antrun-plugin 的 run 目標(biāo)。
- 就是這樣,maven 將處理剩下的事情。它將下載本地倉庫中獲取不到的插件,并開始處理。
相關(guān)文章
- JDBC 教程
- JDBC 驅(qū)動類型
- JDBC 連接數(shù)據(jù)庫范例
- JDBC 連接數(shù)據(jù)庫步驟
- JDBC Statement, PreparedStatement 和 CallableStatement
- JDBC ResultSet 結(jié)果集
- JDBC Resultset 結(jié)果集范例
- JDBC 事務(wù)保存點范例
- Scala 教程
- Scala 簡介
- Scala 類和對象
- Scala 文件 I/O
- Spring 教程
- Spring 模塊
- Spring 依賴注入
- Spring 自動裝配
- Spring MVC教程
- Spring MVC表單標(biāo)簽庫
- Spring security