ITPub博客

首页 > 数据库 > 数据库开发技术 > 如何实现自己第一个maven插件?

如何实现自己第一个maven插件?

原创 数据库开发技术 作者:hblog 时间:2024-07-25 19:54:31 0 删除 编辑

1.什么是maven?

Maven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情。

什么是 Mojo?

Mojo 就是 Maven plain Old Java Object。每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的 Java 类。插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。

2.代码工程

实验目标

实现第一个插件,并在另外一个项目中使用该插件

pom.xml

<?xml version="1.0" encoding="UTF-8"?><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>

Mojo类

它继承了 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;
@Mojo(name="maven-yourfirst-plugin")public class MyMojo extends AbstractMojo {
@Parameter private String msg; public void execute() throws MojoExecutionException,MojoFailureException{ System.out.println("execute success:"+msg); }}

3、打包插件

执行mvn clean install 将插件安装到本地库,之后就可以使用了。 可以在本地仓库中找到

[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-yourfirst-plugin ---[INFO] 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[INFO] 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[INFO] ------

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo(maven-yourfirst-plugin)

3.测试

在另外一个项目上使用我们编写的插件(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>

执行我们的插件,结果可以看到进入我们的插件,执行了里面的方法

4.引用

  • 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;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-05-04

  • 博文量
    210
  • 访问量
    111773