自己动手实现Maven Plugin
来源:互联网 发布:layabox js教程 编辑:程序博客网 时间:2024/06/05 16:04
自己动手实现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");
- 自己动手实现Maven Plugin
- 【Maven】Maven Plugin示例:自己动手编写Maven插件
- 【Maven】Maven Plugin示例:自己动手编写Maven插件
- 【Maven】Maven Plugin示例:自己动手编写Maven插件
- 【Maven】Maven Plugin示例:自己动手编写Maven插件
- 【Maven】Maven Plugin示例:自己动手编写Maven插件
- maven plugin实现方式
- maven-jetty-plugin实现自动部署
- maven tomcat plugin实现热部署
- maven tomcat plugin实现热部署
- maven tomcat plugin实现热部署
- maven tomcat plugin实现热部署
- jetty-maven-plugin实现热部署
- maven tomcat plugin实现热部署
- Maven Plugin
- maven+tomcat6-maven-plugin实现热部署及调试
- maven appassembler-maven-plugin
- maven:maven-assembly-plugin
- POJ ——1465(宽度搜索)
- 4.SimpleTrigger:声明式调度器
- 在外存存储图片的一个典型示例
- 为什么使用%lf读取double型的值,而用%f进行显示?
- 5.SimpleTrigger:quartz_jobs.xml
- 自己动手实现Maven Plugin
- 遥控器测试程序相关技术文档
- Oracle数据库中把一个查询结果插入到一张表中
- Javascript世界中的一等公民——函数
- C++ system函数用法(C)
- Freemaker用法
- 高品质的网页设计: 实例与技巧
- linux shell编程五步拳(张迅雷闪击shell系列) 第一集 shell基本语法快速入门
- Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用