最近因工作需要学习了maven插件开发,之前工作内容都是业务功能的开发,借此机会正好了解一下maven插件开发。
maven插件开发的主要流程如下:
1、新建项目,添加pom依赖:maven-plugin-api,maven-plugin-annotations。
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
2、修改pom文件的packaging为maven-plugin
<packaging>maven-plugin</packaging>
3、新建Mojo类,继承AbstractMojo,添加mojo注解并指定goal,
@Mojo(name = "goal")
public class SWQAMojo extends AbstractMojo {
@Override
public void execute() {
}
}
- 实现execute方法,其中execute方法是执行入口,日志输出使用getLog()来打印。
- maven插件使用
<plugin>
<groupId>com.groupName</groupId>
<artifactId>xxxx-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
- 本地调用直接maven install即可
- 远程调用需要maven deploy 到仓库(需指定distributionManagement),使用方需要配置pluginRepository
4、maven插件的调试(比如插件项目为A,使用插件项目为B)
- 在B项目pom文件引入插件
- 在B项目的根目录下打开控制终端,输入mvnDebug 插件名:goal
- 在A项目run/debug configurations新建remote,在命令行参数把address改为8000,保存后切换到remote运行配置,点击调试按钮开始执行,需要提前在A项目源代码打好断点。
- 日志打印会在B项目输出,进入断点会切换到A项目