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 将解决剩下的事件。它将下载本地仓库中获取不到的插件,并开始解决。