Maven 插件
Maven 有以下三个规范的生命周期:
clean:我的项目清理的解决
default(或 build):我的项目部署的解决
site:我的项目站点文档创立的解决
每个生命周期中都蕴含着一系列的阶段(phase)。这些 phase 就相当于 Maven 提供的对立的接口,而后这些 phase 的实现由 Maven 的插件来实现。
咱们在输出 mvn 命令的时候 比方 mvn clean,clean 对应的就是 Clean 生命周期中的 clean 阶段。然而 clean 的具体操作是由 maven-clean-plugin 来实现的。
所以说 Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。
Maven 实际上是一个依赖插件执行的框架,每个工作实际上是由插件实现。Maven 插件通常被用来:
创立 jar 文件
创立 war 文件
编译代码文件
代码单元测试
创立工程文档
创立工程报告
插件通常提供了一个指标的汇合,并且能够应用上面的语法执行:
<code>mvn [plugin-name]:[goal-name]</code>
例如,一个 Java 工程能够应用 maven-compiler-plugin 的 compile-goal 编译,应用以下命令:<code>mvn compiler:compile</code>
插件类型
Maven 提供了上面两种类型的插件: 实例
咱们曾经在咱们的例子中大量应用了 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 命令。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 将解决剩下的事件。它将下载本地仓库中获取不到的插件,并开始解决。