首页 > 数据库 > 数据库开发技术 > 如何实现自己第一个maven插件?
Maven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情。
Mojo 就是 Maven plain Old Java Object。每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的 Java 类。插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。
实现第一个插件,并在另外一个项目中使用该插件
<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"><parent><artifactId>springboot-demo</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>maven-yourfirst-plugin</artifactId><packaging>maven-plugin</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.apache.maven</groupId><artifactId>maven-plugin-api</artifactId><version>2.0</version></dependency><dependency><groupId>org.apache.maven.plugin-tools</groupId><artifactId>maven-plugin-annotations</artifactId><version>3.3</version></dependency></dependencies></project>
其中打包方式一定要是<packaging>maven-plugin</packaging>
它继承了 AbstractMojo 这个抽象类,并实现了 execute() 方法,该方法就是用来定义这个 Mojo 具体操作内容,我们只需要根据自己的需要来编写自己的实现即可。 Mojo 操作的实现我们了解了,那怎么让 Maven 知道这是一个 Mojo 而不是一个普通的 Java 类呢?这里,就需要说一下 Mojo 的查找机制了,在处理源码的时候,plugin-tools 会把使用了 @Mojo 注解或 Javadoc 里包含 @goal 注释的类来当作一个 Mojo 类。
package com.et.maven.plugin;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;import org.apache.maven.plugins.annotations.Parameter;(name="maven-yourfirst-plugin")public class MyMojo extends AbstractMojo {private String msg;public void execute() throws MojoExecutionException,MojoFailureException{System.out.println("execute success:"+msg);}}
执行mvn clean install 将插件安装到本地库,之后就可以使用了。 可以在本地仓库中找到
[] --- maven-install-plugin:2.5.2:install (default-install) @ maven-yourfirst-plugin ---[] Installing /Users/liuhaihua/IdeaProjects/springboot-demo/maven-yourfirst-plugin/target/maven-yourfirst-plugin-1.0-SNAPSHOT.jar to /Users/liuhaihua/.m2/repository/com/et/maven-yourfirst-plugin/1.0-SNAPSHOT/maven-yourfirst-plugin-1.0-SNAPSHOT.jar[] Installing /Users/liuhaihua/IdeaProjects/springboot-demo/maven-yourfirst-plugin/pom.xml to /Users/liuhaihua/.m2/repository/com/et/maven-yourfirst-plugin/1.0-SNAPSHOT/maven-yourfirst-plugin-1.0-SNAPSHOT.pom[] ------
以上只是一些关键代码,所有代码请参见下面代码仓库
https://github.com/Harries/springboot-demo(maven-yourfirst-plugin)
在另外一个项目上使用我们编写的插件(maven-yourfirst-plugin)
<build><plugins><plugin><groupId>com.et</groupId><artifactId>maven-yourfirst-plugin</artifactId><version>1.0-SNAPSHOT</version><configuration><msg>this is my first maven plugin</msg></configuration><executions><execution><id>first</id><phase>compile</phase><goals><goal>maven-yourfirst-plugin</goal></goals></execution></executions></plugin></plugins></build>
执行我们的插件,结果可以看到进入我们的插件,执行了里面的方法

https://griabcrh.github.io/2018/09/16/Maven%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8F%92%E4%BB%B6%E5%AE%9E%E7%8E%B0/
http://www.liuhaihua.cn/archives/710963.html
原文作者:HBLOG;如有侵权,请联系管理员删除。