如何编写maven plugin 基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写maven plugin 基础相关的知识,希望对你有一定的参考价值。

参考技术A 当maven内置的功能不能满足需求的时候怎么办,那就只能给它写插件了。 (话说回来,给maven扩展只能写一个很完整的插件,而不能是一个简单的script,真的是太笨重了)网络上很多maven的文章,但基本很少谈及如何给它写插件,即使你搜索maven plugin,也只是给你返回一堆如何使用maven插件的文章。希望这边文章能给一些maven使用者带来帮助。我在这里先假设你已经懂得使用maven,我不会贴出完整的pom.xml文件首先,你需要创建一个maven项目,插件是一种特殊的maven项目 然后修改pom.xml,将packaging改为maven-plugin<packaging>maven-plugin</packaging>通过properties定义maven的版本<properties><maven.version>2.2.1</maven.version></properties>maven3已经出了很久,并且兼容maven2,因此我们团队内部都是统一使用maven3,但是我这里编写插件使用的是maven2,可以同时在maven2和maven3下使用,不过其实这个原因并不重要,真正的原因是因为maven3的代码实在太烂了,最初的时候我用maven3的api lib来写,发现里面很多代码根本没有注释,而且很多代码已经废弃,但是并没有明确说明究竟用什么方法代替。接着添加依赖<dependencies><dependency><groupid>org.apache.maven</groupid><artifactid>maven-plugin-api</artifactid><version>$maven.version</version></dependency><dependency><groupid>org.apache.maven</groupid><artifactid>maven-core</artifactid><version>$maven.version</version></dependency></dependencies>然后开始创建Mojo类,maven插件里面每一个具体的功能都是一个Mojo 比如说eclipse:clean和eclipse:eclipse就是两个Mojo/*** @goal helloWorld*/publicclassHelloWorldMojoextendsAbstractMojopublicvoidexecute()throwsMojoExecutionExceptiongetLog().info("Hello, world!");首先继承AbstractMojo,并且实现execute()方法,这个就是每次调用进入的地方 然后需要在类的Javadoc上定义,这是一个annotation出来之前常用的定义方法(或许未来maven会将它改成annotation,那就能提供编译校验和IDE校验)。我们必须定义@goal,代表运行目标,简单来说就是eclipse:clean中的clean Mojo写在哪个package底下都是可以的这样,我们就完成了一个简单的maven plugin,然后我们需要一个简单的测试来确定他正确运行 先通过maven install将它安装到本地仓库然后打开任意maven的项目(比如说我们原来已经在用maven的项目),在pom.xml增加一个plugin<build><plugins><plugin><groupid>xxx</groupid><artifactid>xxx</artifactid><version>xxx</version><executions><execution><phase>compile</phase><goals><goal>helloWorld</goal></goals></execution></executions></plugin></plugins></build>需要留意的是phase部分,我们将这个plugin绑定到compile这个周期 然后我们运行mvn compile,就能成功看见Hello, world!输出 (当然你也可以直接通过命令行运行,需要带上完整的groupId和artifactId才能调用)

以上是关于如何编写maven plugin 基础的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 maven-publish 和 artifactory-gradle-plugin 生成 maven-metata.xml?

maven plugin 简单介绍和实战 (2021-05-29)

maven plugin 简单介绍和实战 (2021-05-29)

docker与Spring boot的集成:docker-maven-plugin使用

如何使用eclipse编写mapreduce程序

在Maven项目中运行JUnit 5测试用例