Maven 插件

灰太狼 2020-05-24 14:15 2288阅读 0赞

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 文件
  • 编译代码文件
  • 代码单元测试
  • 创建工程文档
  • 创建工程报告

插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

  1. <code>mvn [plugin-name]:[goal-name]</code>

例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

  1. <code>mvn compiler:compile</code>

插件类型

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

类型 描述
Build plugins 在构建时执行,并在 pom.xml 的 元素中配置。
Reporting plugins 在网站生成过程中执行,并在 pom.xml 的 元素中配置。

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

插件 描述
clean 构建之后清理目标文件。删除目标目录。
compiler 编译 Java 源文件。
surefile 运行 JUnit 单元测试。创建测试报告。
jar 从当前工程中构建 JAR 文件。
war 从当前工程中构建 WAR 文件。
javadoc 为工程生成 Javadoc。
antrun 从构建过程的任意一个阶段中运行一个 ant 任务的集合。

实例

我们已经在我们的例子中大量使用了 maven-antrun-plugin 来输出数据到控制台上。让我们用一种更好的方式理解这部分内容,在 C:\MVN\project 目录下创建一个 pom.xml 文件。

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.companyname.projectgroup</groupId>
  7. <artifactId>project</artifactId>
  8. <version>1.0</version>
  9. <build>
  10. <plugins>
  11. <plugin>
  12. <groupId>org.apache.maven.plugins</groupId>
  13. <artifactId>maven-antrun-plugin</artifactId>
  14. <version>1.1</version>
  15. <executions>
  16. <execution>
  17. <id>id.clean</id>
  18. <phase>clean</phase>
  19. <goals>
  20. <goal>run</goal>
  21. </goals>
  22. <configuration>
  23. <tasks>
  24. <echo>clean phase</echo>
  25. </tasks>
  26. </configuration>
  27. </execution>
  28. </executions>
  29. </plugin>
  30. </plugins>
  31. </build>
  32. </project>

接下来,打开命令终端跳转到 pom.xml 所在的目录,并执行下面的 mvn 命令。

  1. mvn clean

Maven 将开始处理并显示 clean 生命周期的 clean 阶段。

  1. [INFO] Scanning for projects...
  2. [INFO] ------------------------------------------------------------------
  3. [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
  4. [INFO] task-segment: [post-clean]
  5. [INFO] ------------------------------------------------------------------
  6. [INFO] [clean:clean {execution: default-clean}]
  7. [INFO] [antrun:run {execution: id.clean}]
  8. [INFO] Executing tasks
  9. [echo] clean phase
  10. [INFO] Executed tasks
  11. [INFO] ------------------------------------------------------------------
  12. [INFO] BUILD SUCCESSFUL
  13. [INFO] ------------------------------------------------------------------
  14. [INFO] Total time: < 1 second
  15. [INFO] Finished at: Sat Jul 07 13:38:59 IST 2012
  16. [INFO] Final Memory: 4M/44M
  17. [INFO] ------------------------------------------------------------------

上面的例子展示了以下关键概念:

  • 插件是在 pom.xml 中使用 plugins 元素定义的。
  • 每个插件可以有多个目标。
  • 你可以定义阶段,插件会使用它的 phase 元素开始处理。我们已经使用了 clean 阶段。
  • 你可以通过绑定到插件的目标的方式来配置要执行的任务。我们已经绑定了 echo 任务到 maven-antrun-plugin 的 run 目标。
  • 就是这样,Maven 将处理剩下的事情。它将下载本地仓库中获取不到的插件,并开始处理。

发表评论

表情:
评论列表 (有 0 条评论,2288人围观)

还没有评论,来说两句吧...

相关阅读

    相关 maven

    一直没注意看maven执行过程中的打印日志,今天突然发现一段话,说编译以及resource未指定编码,默认gbk。于是,百度了设置编码的方式: <plugin>

    相关 Maven

    Maven 有以下三个标准的生命周期: - **clean**:项目清理的处理 - **default(或 build)**:项目部署的处理 - **site**:项目站...