Maven 實際上是一個依賴插件執(zhí)行的框架,每個任務(wù)實際上是由插件完成。Maven 插件通常被用來:
插件通常提供了一個目標(biāo)的集合,并且可以使用下面的語法執(zhí)行:
mvn [plugin-name]:[goal-name]
例如,一個 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 編譯,使用以下命令:
mvn compiler:compile
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 | 運行 JUnit 單元測試。創(chuàng)建測試報告。 |
jar | 從當(dāng)前工程中構(gòu)建 JAR 文件。 |
war | 從當(dāng)前工程中構(gòu)建 WAR 文件。 |
javadoc | 為工程生成 Javadoc。 |
antrun | 從構(gòu)建過程的任意一個階段中運行一個 ant 任務(wù)的集合。 |
我們已經(jīng)在我們的例子中大量使用了 maven-antrun-plugin 來輸出數(shù)據(jù)到控制臺上。請查看 Maven - 構(gòu)建配置文件 章節(jié)。讓我們用一種更好的方式理解這部分內(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 命令。
C:\MVN\project>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)鍵概念:
更多建議: