Maven 插件开发(一)
项目在重构之后,想由ant切换到maven,在转换的过程中遇到一个问题。因为项目是基于OSGi的架构,而OSGi在运行时是依赖于插件环境的,bundle之间存在package依赖。而maven是基于dependency来进行依赖的,而且,这种依赖是构建依赖,OSGi运行环境是不支持的。
为了较好的处理bundle运行时的package依赖到bundle构建时的dependency依赖,仔细看了看maven的相关插件,没找到支持的,没办法,那就自己写一个。
思路:bundle只需要配置MANIFEST.MF文件,在执行“generate-sources”这个任务时,把pom.xml的dependency修改。将这个bundle导入的package全部以dependency依赖的形式在pom.xml中体现。
第一步:创建maven的插件项目,这是基础,不细说;
第二步:继承AbstractMojo,提供给maven调用的入口;定义插件挂接的任务单元为“generate-sources”,使得这种修改在合适的任务中处理;定义子任务,支持在调用方可以配置参数。形式如下:
/**
* @goal directory 子任务
* @phase process-resources maven的任务单元
*/
public class AnalysisDependency extends AbstractMojo {
/** 子任务接受的参数,默认值为Hello to you!
* @parameter expression="${directory.bundleDirectorys}" default-value="Hello to you!"
*/
private String bundleDirectorys;
……
}
第三步:分析bundle的MANIFEST.MF文件,分析其他bundle的该文件,并且将jar的坐标计算出来,获得一个依赖集合,最后,将这个依赖添加到对应的pom.xml中。从而实现package依赖转dependency依赖。
最新文章
- [AlwaysOn Availability Groups]排查:AG超过RPO
- xhprof学习笔记
- 【UFLDL】Exercise: Convolutional Neural Network
- Android开发之ProgressDialog在独立Thread线程中更新进度
- 三维网格形变算法(Laplacian-Based Deformation)
- 泥泞的道路(codevs 1183)
- mysql左外连接,右外连接,全连接
- jquery 书写全选反选功能
- window7环境下VMWare自定义安装Linux虚拟机完全教程
- CISCO交换机-SNMP配置
- PHP6天基础知识部分
- Java高并发秒杀API之web层
- RocketMQ在windows环境下的安装
- Qt中的主窗口之菜单栏
- 如何从Windows中删除Node.js
- 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用
- Python闭包装饰器笔记
- kubernetes实战(十六):k8s高可用集群平滑升级 v1.11.x 到v1.12.x
- sql的预编译问题
- a+b+c的N次方展开