自己动手实现Maven Plugin

1 篇文章 0 订阅
1 篇文章 0 订阅
这篇教程介绍了如何在Eclipse中开发Maven插件,重点讲解了Maven插件(Mojo)的概念以及如何创建一个简单的HelloWorld插件示例。通过创建一个Group Id为com.simple.plugin,Artifact为helloworld的Maven项目,并在pom.xml中指定打包类型为maven-plugin。文章还提到了实现Mojo的execute方法,用于在插件运行时输出“Hello World”。此外,文中还展示了如何调试插件并获取目标工程的引用。
摘要由CSDN通过智能技术生成

自己动手实现Maven Plugin


要想开发Maven插件首先需要在自己的eclipse上安装Maven插件,这样可以帮助你开发与调试,安装过程这里就不说了,网上太多了,也很简单。


这次的教程会告诉大家开发Maven插件的步骤和相关参数的含义,最后会开发一个简单的hello world例子。


Maven把插件叫做mojo,官方的解释是:mojo就是Maven Plain Old Java Object,一个普通的Java类。


我们首先创建一个Maven项目Group Id:com.simple.plugin,Artifact:helloworld,并且在生成的pom.xml里面先加入一个选项<packaging>maven-plugin</packaging>说明该工程是Maven插件工程和我们开发插件需要的依赖关系如下:<dependencies>

 <dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>2.0</version>
 </dependency>
 <dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-core</artifactId>
    <version>3.0.4</version>
 </dependency>
  </dependencies>



相关包的版本号根据当时最新的版本自己修改下。


这样我们的插件工程就建好了,现在就可以实现我的第一个mojo helloworld例子了,我们通过Maven提供的一个抽象Mojo类来派生HelloWorldMojo,并且实现execute方法,该方法会在插件的运行期被调用,我们只做一个简单的日志输出打印出Hello Wrold。


非常重要的一点我们需要添加一个annotation “goal”,告诉Maven plugin执行器这个类是个是一个mojo,代码如下:

package com.simple.plugin;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
*
*@goalhelloword
*
*/
publicclass HelloWorldMojo extends AbstractMojo {
  publicvoid execute() throws MojoExecutionException, MojoFailureException {
 getLog().info("Hello World");
  }
}




插件完成后需要配置到需要被调用的Maven工程上,我们只需要在目标工程的pom.xml文件加入几行配置就可以如下:

<plugins>
    <plugin>
       <groupId>com.simple.plugin</groupId>
       <artifactId>helloworld</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <executions>
          <execution>
             <phase>compile</phase>
             <goals>
                <goal>helloword</goal>
             </goals>
          </execution>
       </executions>
    </plugin>
 </plugins>



plugins 标签描述多个插件
plugin 描述每个插件的信息
groupid 需要执行插件的groupid
artifactid 需要执行插件的artifactid
version 需要执行插件的版本
executions 工程被build生命周期中各个执行器的配置
execution 执行器相关描述
phase 在生命周期中哪个各阶段执行插件,例子中我们是编译后,其中包括很多可参考官方文档 http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
goals 该执行起所需要执行的插件
goal 插件类中@goal后声明的名字

开发完成后需要debug可以在目标工程上鼠标右键点击Run as->Maven build在弹出的配置窗口中Goals配置process-classes并且勾选上Resolve Workspace artifacts完成后点击debug就可以了


顺便说下啊,一般情况下我们设计插件都是需要访问目标工程的相关资源,这时我们可以在execute方法内通过上下文获得工程引用代码如下:


Map map = getPluginContext();
// 通过上下文拿到当前工程的引用
MavenProject project = (MavenProject) map.get("project");


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值