首页> 中国专利> 依赖版本处理插件及采用其对依赖版本进行处理的方法

依赖版本处理插件及采用其对依赖版本进行处理的方法

摘要

本发明公开了依赖版本处理插件及采用其对依赖版本进行处理的方法,该依赖版本处理插件包括基础信息处理单元、数据结构构造单元、依赖逻辑处理单元和文件操作单元,其中,基础信息处理单元用于解析项目中的依赖,生成树状文件,数据结构构造单元用于定义一个数据结构,并将基础信息处理单元生成的树状文件转成树状数据结构,依赖逻辑处理单元用于遍历数据结构构造单元生成的树状数据结构,标记重复依赖所在的节点,文件操作单元用于再次遍历数据结构构造单元生成的树状数据结构,并对标记出的节点进行操作。本发明的依赖版本处理插件及处理方法,能自动排除项目中的重复依赖,减轻项目的重量,降低项目因为依赖冲突导致的隐患。

著录项

  • 公开/公告号CN104834528A

    专利类型发明专利

  • 公开/公告日2015-08-12

    原文格式PDF

  • 申请/专利号CN201510268811.4

  • 发明设计人 孙庆超;

    申请日2015-05-25

  • 分类号G06F9/44(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人宋焰琴

  • 地址 100080 北京市海淀区杏石口路65号西杉创意园西区11C楼东段1-4层西段1-4层

  • 入库时间 2023-12-18 10:12:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-22

    授权

    授权

  • 2015-09-09

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20150525

    实质审查的生效

  • 2015-08-12

    公开

    公开

说明书

技术领域

本发明属于互联网领域,尤其涉及一种项目开发中依赖版本处理插件 及采用其对依赖版本进行处理的方法。

背景技术

现在开发一个完整的项目,特别是一个较大的Web应用(一种可以通 网络网页访问的应用程序),代码开发时需要引入大量的jar包(提供已经可 以直接使用的Java Class文件的包)。由于这些jar包也处于更新阶段,而 且不同公司可能提供同样的jar包,因此很容易在项目使用中发生问题。 例如:A公司提供了x-1.0.jar包,后来更新为x-1.1.jar。在项目开发的时 候因为种种原因同时引入了这两个jar包,会导致如下问题:1.引入冗余的 jar包(x-1.0.jar);2.x-1.1.jar和x-1.0.jar相比有个class文件M发生了变化, 因此项目中使用M的时候会有两个版本,很容易出错。

Maven是一种基于项目对象模型的项目管理工具,可以通过一小段描 述信息来管理项目的构建、报告和文档。

Intellij Idea是一种java语言开发的集成环境,其在业界被公认为最好 的java开发工具之一,尤其在智能代码助手、代码自动提示及重构、Java2 平台企业版(J2EE)支持、代码审查和图形用户界面(GUI)设计等方面具有强 大的功能。

现有技术中,在项目开发时,根据maven提供的依赖树(dependency: tree),可以解析出项目中的依赖。但是如果一个庞大的项目,解析出的依 赖众多,进行重复依赖排除操作如下:需要在整个解析结果中检索某个jar 包在那些地方引入了依赖,然后根据检索结果,一层层追溯,并且在项目 中搜索引入依赖的声明位置,然后进行该依赖的排除,如果有两个重复的 地方就要按如上方式操作一次,如果有三处重复就要操作两次,也就是说 针对一个jar包,如果重复了N次,则需要N-1次排重操作。可见这种方 式浪费时间和人力。因此,需要开发一个插件,能将解析结果进一步处理, 自动排除项目中的重复依赖。

发明内容

(一)要解决的技术问题

本发明的目的在于提供一种依赖版本处理插件及采用其对依赖版本 进行处理的方法,以自动排除项目中的重复依赖,减轻项目的重量,降低 项目因为依赖冲突导致的隐患。

(二)技术方案

本发明提供一种依赖版本处理插件,其运行于Intellij Idea上,该插件 包括:

基础信息处理单元,用于解析项目中的依赖,生成树状文件;

数据结构构造单元,用于定义一个数据结构,将基础信息处理单元生 成的树状文件转成树状数据结构;

依赖逻辑处理单元,用于遍历数据结构构造单元生成的树状数据结构, 标记重复依赖所在的节点;以及

文件操作单元,用于再次遍历数据结构构造单元生成的树状数据结构, 并对标记出的节点进行操作。

本发明还提供一种采用依赖版本处理插件对依赖版本进行处理的方 法,方法包括:

步骤1,基础信息处理单元解析项目中的依赖,生成树状文件;

步骤2,数据结构构造单元定义一个数据结构,将基础信息处理单元 生成的树状文件转成树状数据结构;

步骤3,依赖逻辑处理单元遍历数据结构构造单元生成的树状数据结 构,标记重复依赖所在的节点;

步骤4,文件操作单元再次遍历该树状数据结构,并对标记出的节点 进行操作。

(三)有益效果

1.本发明提供的依赖版本处理插件及采用其对依赖版本进行处理的 方法,在解析出项目中重复的依赖后,通过依赖逻辑处理单元将重复依赖 进行标记,然后采用文件操作单元将标记的重复依赖进行自动删除,以排 除大量冗余jar包,所以能极大地减小一个项目的大小。

2.现有技术在解析出项目中重复的依赖后,只能人工针对解析出的结 果逐一在项目中进行检索排除,浪费时间和人力,而本发明通过数据结构 构造单元构建树状数据结构,然后通过依赖逻辑处理单元遍历此树状数据 结构,标记出重复依赖,最后通过文件操作单元再次遍历此树状数据结构, 对标记出重复依赖进行操作,故能将重复依赖进行自动排除,所以减少研 发人员在排除重复依赖上花费的时间。

3.由于将重复依赖排除了,就不会引入冗余的jar包,也不会在项目 中使用class文件的时候会有多个版本,所以降低项目因为依赖冲突导致 的隐患。

附图说明

图1是本发明提供的依赖版本处理插件的结构示意图。

图2是本发明提供的对依赖版本进行处理的方法流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实 施例,并参照附图,对本发明进一步详细说明。

本发明提供的依赖版本处理插件,通过数据结构构造单元构建树状数 据结构,然后通过依赖逻辑处理单元遍历此树状数据结构,标记出重复依 赖,最后通过文件操作单元再次遍历此树状数据结构,对标记出重复依赖 进行操作,故能将重复依赖自动进行排除,所以能排除大量冗余jar包, 极大地减小一个项目的大小,也不会在项目中使用class文件的时候会有 多个版本,所以降低项目因为依赖冲突导致的隐患。

如图1所示,图1是本发明的依赖版本处理插件的结构示意图,该依 赖版本处理插件包括基础信息处理单元10、数据结构构造单元20、依赖 逻辑处理单元30和文件操作单元40,其中:

基础信息处理单元10用于根据项目管理工具maven提供的依赖树 (dependency:tree),解析出项目中的依赖,形成树状文件。

数据结构构造单元20用于定义一个数据结构,并将基础信息处理单 元生成的树状文件转成树状数据结构,其中,树状数据结构中的每个节点 至少包括依赖声明文件路径、依赖项目组织唯一标识(groupId)、依赖项目 唯一标识符(artifactId)、依赖版本(version)、传递依赖标识、依赖可删除标 识、依赖处理异常标识和节点类型标识。

依赖逻辑处理单元30用于遍历数据结构构造单元生成的树状数据结 构,标记重复依赖所在的节点,其中,在遍历所述树状数据结构时,依赖 逻辑处理单元判断节点的依赖项目组织唯一标识与依赖项目唯一标识符 是否一致,若不一致,则将此节点的依赖可删除标识设置为Yes;若一致, 则进一步判断节点的依赖版本是否为最高版本,若不是最高版本,则将此 节点的依赖可删除标识设置为Yes;若是最高版本,则进一步判断最高版 本是否为快照(snapshot),若是,则将此节点的依赖可删除标识设置为Yes; 若不是,则保留此节点。

文件操作单元40用于再次遍历树状数据结构,获取节点的依赖可删 除标识,判断所述依赖可删除标识的设置是否为Yes,若是,则通过所述 节点类型标识判断此节点的类型,若此节点的类型是根节点,则删除此根 节点,若此节点的类型是子节点,则找到此子节点的根节点,并在此根节 点处写入依赖排除标签。

另外,为了方便用户查看相关依赖处理信息,本发明提供的依赖版本 处理插件还包括辅助单元50,辅助单元50用于生成依赖处理文件,该依 赖处理文件至少包括重复依赖的详细信息、依赖处理信息和依赖手动处理 标识。

本发明提供的依赖版本处理插件,在解析出项目中重复的依赖后,通 过依赖逻辑处理单元将重复依赖进行标记,然后采用文件操作单元将标记 的重复依赖进行自动删除,以排除大量冗余jar包,所以能极大地减小一 个项目的大小;现有技术在解析出项目中重复的依赖后,只能人工针对解 析出的结果逐一在项目中进行检索排除,浪费时间和人力,而本发明通过 数据结构构造单元构建树状数据结构,然后通过依赖逻辑处理单元遍历此 树状数据结构,标记出重复依赖,最后通过文件操作单元再次遍历此树状 数据结构,对标记出重复依赖进行操作,故能将重复依赖进行自动排除, 所以减少研发人员在排除重复依赖上花费的时间;由于将重复依赖排除了, 就不会引入冗余的jar包,也不会在项目中使用class文件的时候会有多个 版本,所以降低项目因为依赖冲突导致的隐患。

基于图1所示的依赖版本处理插件,本发明还提供一种采用该插件进 行依赖版本管理的方法,如图2所示,该方法包括:

步骤1,基础信息处理单元解析项目中的依赖,生成树状文件;

步骤2,数据结构构造单元定义一个数据结构,将基础信息处理单元 生成的树状文件转成树状数据结构;

步骤3,依赖逻辑处理单元遍历数据结构构造单元生成的树状数据结 构,标记重复依赖所在的节点;

步骤4,文件操作单元再次遍历该树状数据结构,并对标记出的节点 进行操作。

本发明通过数据结构构造单元构建树状数据结构,然后通过依赖逻辑 处理单元遍历此树状数据结构,标记出重复依赖,最后通过文件操作单元 再次遍历此树状数据结构,对标记出重复依赖进行操作,故能将重复依赖 自动进行排除,所以能排除大量冗余jar包,极大地减小一个项目的大小, 也不会在项目中使用class文件的时候会有多个版本,所以降低项目因为 依赖冲突导致的隐患。

根据图2所示的依赖版本管理方法,结合具体实施例,该依赖版本管 理方法包括:

S1,基础信息处理单元根据项目管理工具maven提供的依赖树 (dependency:tree),解析出项目中的依赖,生成树状文件;

S2,数据结构构造单元定义一个数据结构,并将基础信息处理单元生 成的树状文件转成树状数据结构,其中,树状数据结构中的每个节点至少 包括依赖声明文件路径、依赖项目组织唯一标识(groupId)、依赖项目唯一 标识符(artifactId)、依赖版本(version)、传递依赖标识、依赖可删除标识、 依赖处理异常标识和节点类型标识;

S3,依赖逻辑处理单元遍历数据结构构造单元生成的树状数据结构, 标记重复依赖所在的节点,其中,在遍历所述树状数据结构时,依赖逻辑 处理单元判断节点的依赖项目组织唯一标识与依赖项目唯一标识符是否 一致,若不一致,则将此节点的依赖可删除标识设置为Yes;若一致,则 进一步判断节点的依赖版本是否为最高版本,若不是最高版本,则将此节 点的依赖可删除标识设置为Yes;若是最高版本,则进一步判断最高版本 是否为快照(snapshot),若是,则将此节点的依赖可删除标识设置为Yes; 若不是,则保留此节点;

S4,文件操作单元再次遍历树状数据结构,获取节点的依赖可删除标 识,判断所述依赖可删除标识的设置是否为Yes,若是,则通过所述节点 类型标识判断此节点的类型,若此节点的类型是根节点,则删除此根节点, 若此节点的类型是子节点,则找到此子节点的根节点,并在此根节点处写 入依赖排除标签。

另外,为了方便用户查看相关依赖处理信息,本发明提供的依赖版本 处理方法在步骤S4之后还包括S5,通过辅助单元生成依赖处理文件,该 依赖处理文件至少包括重复依赖的详细信息、依赖处理信息和依赖手动处 理标识。

本发明提供的依赖版本处理方法,在解析出项目中重复的依赖后,通 过依赖逻辑处理单元将重复依赖进行标记,然后采用文件操作单元将标记 的重复依赖进行自动删除,以排除大量冗余jar包,所以能极大地减小一 个项目的大小;现有技术在解析出项目中重复的依赖后,只能人工针对解 析出的结果逐一在项目中进行检索排除,浪费时间和人力,而本发明通过 数据结构构造单元构建树状数据结构,然后通过依赖逻辑处理单元遍历此 树状数据结构,标记出重复依赖,最后通过文件操作单元再次遍历此树状 数据结构,对标记出重复依赖进行操作,故能将重复依赖进行自动排除, 所以减少研发人员在排除重复依赖上花费的时间;由于将重复依赖排除了, 就不会引入冗余的jar包,也不会在项目中使用class文件的时候会有多个 版本,所以降低项目因为依赖冲突导致的隐患。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行 了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而 已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号