Maven - 插件

什么是Maven插件?

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

  • 生成jar包文件
  • 生成war包文件
  • 编译源码文件
  • 代码单元测试
  • 生成项目文档
  • 生成j项目报告

一个插件通常提供一系列的目标操作,并且目标操作可以通过以下格式的命令执行:

mvn [插件名]:[目标操作名]

例如,一个Java项目可以通过运行下面的命令使用maven-compiler-plugin的compile目标操作编译。

mvn compiler:compile

插件类型

Maven提供了下面两类插件:

类型 描述
构建插件(Build plugins) 这类插件在构建过程中执行,并且应该配置在pom.xml文件的<build\>节点中。
报告插件(Reporting plugins) 这类插件在生成站点过程中执行,并且应该配置在pom.xml文件的<reporting/>节点中。

下面是一些常用的插件的列表:

插件 描述
clean 构建完成后清理目标,删除目标目录。
compiler 编译Java源文件。
surefile 运行JUnit单元测试,生成测试报告。
jar 从当前项目生成JAR文件。
war 从当前项目生成WAR文件。
javadoc 生成项目的Javadoc。
antrun 运行任意指定构建阶段的一系列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:\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] ------------------------------------------------------------------

上面的例子中阐明了下面几个关键概念:

  • 插件在pom.xml文件中是通过plugins节点明确指定的。
  • 每个插件可以有多个目标操作。
  • 你可以使用phase节点来定义插件从哪个节点开始处理。我们已使用的是clean阶段。
  • 你可以通过绑定任务到插件的目标操作来配置要执行的任务。我们已经绑定了echo任务到maven-antrun-plugin插件的run目标操作。
  • 以上,Maven会处理剩下的事情。若本地仓库中找不到,Maven会下载插件,并且开始处理。

results matching ""

    No results matching ""