- 1. 目标
- 2. 插件开发
- 3. 插件的使用
- 3.1 插件的匹配规则
- 3.2 命令行直接使用
- 3.3 配置到build标签
更好的理解插件的目标和生命周期环节之间的关系
2. 插件开发-
创建一个project,名称为maven-hello-plugin
-
修改pom.xml,添加packaging和dependency,最终内容如下:
4.0.0
com.hh.maven
maven-hello-plugin
1.0
maven-plugin
11
11
org.apache.maven
maven-plugin-api
3.8.6
- 创建Mojo类
Mojo(Maven Old Java Object)类是一个Maven插件的核心类。每一个Mojo类都需要实现org.apache.maven.plugin.Mojo接口,org.apache.maven.plugin.AbstractMojo抽象类继承Mojo接口
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
// 方式一:使用的是maven-plugin-api,通过注释的方式将goal目标,绑定到MOJO类
/**
* @goal sayHelloApi
*/
// 方式二:使用的是maven-plugin-annotations,通过注解的方式将goal目标,绑定到MOJO类
@Mojo(name = "sayHelloAnnotations")
public class MavenHelloPlugin extends AbstractMojo {
// 覆盖execute()方法
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("=======this is my first maven plugin=======");
}
}
-
执行
mvn clean install
将插件安装到本地的maven仓库 -
将插件注册到settings.xml中 将插件的pom中的groupId添加到settings.xml的pluginGroups.pluginGroup。如下所示
com.hh
3. 插件的使用
3.1 插件的匹配规则
Maven根据插件的artifactId来进行插件的匹配,有如下两种匹配规则:
-
前置匹配:
匹配规则:${prefix}-maven-plugin artifactId:hello-maven-plugin 匹配到插件:hello
-
中间匹配
匹配规则:maven-${prefix}-plugin artifactId:maven-hello-plugin 匹配到插件:hello
C:\Users\dell\Desktop\maven-hello-plugin>mvn hello:sayHelloApi
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< com.hh:maven-hello-plugin >----------------------
[INFO] Building maven-hello-plugin 1.0
[INFO] ----------------------------[ maven-plugin ]----------------------------
[INFO]
[INFO] --- maven-hello-plugin:1.0:sayHelloApi (default-cli) @ maven-hello-plugin ---
[INFO] =======this is my first maven plugin=======
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.553 s
[INFO] Finished at: 2022-06-30T18:25:25+08:00
[INFO] ------------------------------------------------------------------------
C:\Users\dell\Desktop\maven-hello-plugin>
3.3 配置到build标签
com.hh
maven-hello-plugin
1.0
sayHelloApiId
clean
sayHelloApi
sayHelloAnnotationsId
clean
sayHelloAnnotations
重新导入依赖,效果如下:
双击其中任何一个都会执行,打印:
=======this is my first maven plugin=======
命令行执行mvn clean
,也会自动执行maven-hello-plugin插件的goal目标方法。效果如下:
C:\Users\dell\Desktop\maven-hello-plugin>mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< com.hh:maven-hello-plugin >----------------------
[INFO] Building maven-hello-plugin 1.0
[INFO] ----------------------------[ maven-plugin ]----------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-hello-plugin ---
[INFO] Deleting C:\Users\dell\Desktop\maven-hello-plugin\target
[INFO]
[INFO] --- maven-hello-plugin:1.0:sayHelloApi (sayHelloApiId) @ maven-hello-plugin ---
[INFO] =======this is my first maven plugin=======
[INFO]
[INFO] --- maven-hello-plugin:1.0:sayHelloAnnotations (sayHelloAnnotationsId) @ maven-hello-plugin ---
[INFO] =======this is my first maven plugin=======
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.419 s
[INFO] Finished at: 2022-06-30T18:35:18+08:00
[INFO] ------------------------------------------------------------------------
C:\Users\dell\Desktop\maven-hello-plugin>