Maven插件(plugin)
对于 Maven 插件而言,为了提高代码的复用性,通常一个 Maven 插件能够实现多个功能,每一个功能都是一个插件目标,即 Maven 插件是插件目标的集合。我们可以把插件理解为一个类,而插件目标是类中的方法,调用插件目标就能实现对应的功能。
插件目标的通用写法如下。
[插件名]:[插件目标名]
例如,maven-compiler-plugin 插件的 compile 目标的通用写法如下。
maven-compiler-plugin:compile执行插件目标
使用 Maven 命令执行插件的目标,语法如下。
mvn [插件名]:[目标名]
例如,调用 maven-compiler-plugin 插件的 compile 目标,命令如下。
mvn compiler:compile
为了完成某个具体的构建任务,Maven 生命周期的阶段需要和 Maven 插件的目标相互绑定。例如,代码编译任务对应了default 生命周期的 compile 阶段,而 maven-compiler-plugin 插件的 compile 目标能够完成这个任务,因此将它们进行绑定就能达到代码编译的目的。
Maven 默认为一些核心的生命周期阶段绑定了插件目标,当用户调用这些阶段时,对应的插件目标就会自动执行相应的任务。
上表中,default 生命周期中只列出了绑定了插件目标的阶段,它还有很多其他的阶段,但这些阶段默认没有绑定任何插件目标,因此它们也没有任何实际的行为。
我们可以直接在执行 Maven 命令看到该构建过程包含了哪些插件目标。例如,在 Maven 项目中执行 mvn clean install 命令,能看到如下输出,图中标记的部分就是执行此命令时所调用的插件目标。
![Maven 内置插件目标](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/19/20210719_60f5aaf491b55.png)
除了内置绑定之外,用户也可以自己选择将某个插件目标绑定到 Maven 生命周期的某个阶段上,这种绑定方式就是自定义绑定。自定义绑定能够让 Maven 在构建过程中执行更多更丰富的任务。
例如,我们想要在 clean 生命周期的 clean 阶段中显示自定义文本信息,则只需要在项目的 POM 中 ,通过 build 元素的子元素 plugins,将 maven-antrun-plugin:run 目标绑定到 clean 阶段上,并使用该插件输出自定义文本信息即可。
project build plugins !-- 绑定插件 maven-antrun-plugin -- plugin groupId org.apache.maven.plugins /groupId artifactId maven-antrun-plugin /artifactId version 1.8 /version executions execution !--自定义 id -- id www.biancheng.net clean /id !--插件目标绑定的构建阶段 -- phase clean /phase !--插件目标 -- goals goal run /goal /goals !--配置 -- configuration !-- 执行的任务 -- tasks !--自定义文本信息 -- echo 清理阶段,编程帮 欢迎您的到来,网址:www.biancheng.net /echo /tasks /configuration /execution /executions /plugin /plugins /build /project
以上配置中除了插件的坐标信息之外,还通过 executions 元素定义了一些执行配置。executions 下的每一个 executin 子元素都可以用来配置执行一个任务。
execution 下各个元素含义如下:
[INFO] ------------------ net.biancheng.www:helloIdeaMaven ------------------ [INFO] Building helloIdeaMaven 2.6-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ helloIdeaMaven --- [INFO] Deleting D:/eclipse workSpace 3/helloIdeaMaven/target [INFO] [INFO] --- maven-antrun-plugin:1.8:run (www.biancheng.net clean) @ helloIdeaMaven --- [WARNING] Parameter tasks is deprecated, use target instead [INFO] Executing tasks main: [echo] 清理阶段,编程帮 欢迎您的到来,网址:www.biancheng.net [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.753 s [INFO] Finished at: 2021-04-08T10:22:49+08:00 [INFO] ------------------------------------------------------------------------
当插件目标绑定到生命周期的不同阶段时,其执行顺序由生命周期阶段的先后顺序决定。如果多个目标绑定到同一个生命周期阶段,其执行顺序与插件声明顺序一致,先声明的先执行,后声明的后执行。
相关文章
- 【IDEA】idea设置默认maven配置, 避免每次设置maven「建议收藏」
- maven中jar和war的区别
- 【Maven】maven打包生成可执行jar文件
- Maven压缩插件YUI Compressor使用介绍
- Maven私服如何上传jar包?看这里!
- JavaWeb基本Jar包Maven
- 从零到一搭建基础架构(1)-玩转maven依赖版本管理
- Maven安装和配置
- Maven的生命周期与插件
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ④ ( 默认生成的 pom 文件 | Maven 中的 pom 配置 | 自定义 pom 文件节点 )
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑤ ( 使用 Sonatype Nexus 搭建 Maven 仓库 )
- Maven对插件进行全局设置详解程序员
- Maven学习 (二) Eclipse 上安装 Maven3插件详解程序员
- idea + Maven + Spring + myBatis的单元测试详解编程语言
- Maven项目配置tomcat插件实现项目自动部署到远程服务器详解编程语言
- Maven安装配置和目录结构详解
- Maven生成站点和报告文档(cmd命令)
- Maven测试插件
- Maven自定义插件的实现
- 使用Maven搭建Oracle数据库环境(maven oracle)