• 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依赖。

  • 相关阅读:
    shell-用户权限操作
    Python 库列表
    【random】模块运用,随机数实例
    Python 原生文件读写
    Python 运用pymysql+pandas 完成连接 MySQL 数据库读
    MySQL命名、设计及使用规范
    测试for循环计算耗时
    正则表达式速查表
    MySQL8.0.21下载安装详细教程
    MySQL 修改目录重置
  • 原文地址:https://www.cnblogs.com/asfeixue/p/3624587.html
Copyright © 2020-2023  润新知