-

什么是Maven插件?

Maven实际上是一个插件执行框架,每个任务实际上都是由插件完成的。Maven插件通常用于:

插件通常提供一组目标,可以使用以下语法执行:

mvn [plugin-name]:[goal-name]

例如,通过运行以下命令,可以使用maven-compiler-plugin的编译目标来编译Java项目

mvn compiler:compile

插件类型

Maven提供了以下两种类型的插件:

类型 描述
创建插件 它们在创建期间执行,并且应在pom.xml的<build />元素中进行配置
报告插件 它们在站点生成期间执行,并且应在pom.xml的<reporting />元素中进行配置

以下是几个常见插件的列表:

插入 描述
清洁 建造后清理目标。删除目标目录。
编译器 编译Java源文件。
肯定的 运行JUnit单元测试。创建测试报告。
从当前项目创建一个JAR文件。
战争 从当前项目创建一个WAR文件。
javadoc 为项目生成Javadoc。
Ant 从创建提到的任何阶段运行一组Ant任务。

示例

我们在我们的示例中广泛使用了maven-antrun-plugin来在控制台上打印数据。请参阅Maven创建配置文件一章。让我们以更好的方式了解它,让我们在C: MVN project文件夹中创建一个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>

接下来,打开命令控制台,并转到包含pom.xml的文件夹,然后执行以下mvn命令。

C:MVNproject>mvn clean

Maven将开始处理和显示清洁生命周期的清洁阶段

[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] ------------------------------------------------------------------

上面的例子说明了以下关键概念: