实现依赖冲突分析的方法、装置、设备及存储介质制造方法及图纸

技术编号:37509093 阅读:23 留言:0更新日期:2023-05-07 09:48
本发明专利技术公开了一种实现依赖冲突分析的方法、装置、设备及存储介质,该方法包括:采集开源组件依赖信息;将开源组件依赖信息存储至预设的图引擎中,并在图引擎中建立各开源组件之间的依赖关系;基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突。其中,图引擎具体可以为neo4j图引擎。本发明专利技术利用neo4j存储所有依赖关系,可快速高效地查询依赖关系、无需实际导入依赖即可实现依赖冲突分析,并可进一步将分析结果应用到业务中,如相似组件推荐的兼容性分析。相比现有技术,本发明专利技术技术方案解决了开源组件maven依赖关系的存储以及开源组件maven依赖冲突的分析、业务应用的技术问题。业务应用的技术问题。业务应用的技术问题。

【技术实现步骤摘要】
实现依赖冲突分析的方法、装置、设备及存储介质


[0001]本专利技术涉及开源组件
,尤其涉及一种实现依赖冲突分析的方法、装置、设备及存储介质。

技术介绍

[0002]maven依赖冲突现象是指A组件依赖B组件、C组件,而B组件本身又依赖C组件,但是这两个C组件的版本不一样,这时就会产生依赖冲突。
[0003]针对maven依赖冲突分析,就是分析maven项目中引入的依赖是否存在冲突。
[0004]目前,存在许多插件可以进行依赖冲突分析,但是大多数都是需要内嵌在开发工具内或者安装maven,如IntelliJ IDEA,无法直接在业务系统中对此进行进一步的分析、应用。

技术实现思路

[0005]本专利技术的主要目的在于提供一种实现依赖冲突分析的方法、装置、设备及存储介质,可快速高效地查询依赖关系、无需实际导入依赖即可实现依赖冲突分析,并可进一步将分析结果应用到业务中。
[0006]为实现上述目的,本专利技术实施例提供一种实现依赖冲突分析的方法,所述方法包括以下步骤:
[0007]采集开源组件依赖信息;
[0008]将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系;
[0009]基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突。
[0010]可选地,所述采集开源组件依赖信息的步骤包括:
[0011]通过各官方网站收集开源maven组件的依赖信息。
[0012]可选地,所述将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系的步骤包括:
[0013]通过cypher

shell插件将开源maven组件的依赖信息以固定结构存储至图引擎neo4j中,在所述图引擎neo4j中建立各开源maven组件之间的依赖关系。
[0014]可选地,所述基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突的步骤之前还包括:
[0015]通过第三方SCA工具分析出自研项目的依赖关系,并将所述自研项目的依赖关系存储到图引擎neo4j中。
[0016]可选地,所述基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突的步骤包括:
[0017]在java代码中通过图引擎Neo4j提供的traversal框架查询出所述自研项目的所有依赖关系A集合,并查询出需要替换的依赖的所有依赖关系B集合、被替换的依赖的所有
依赖关系C集合;
[0018]将所述A集合中包含的C集合剔除掉,将所述B集合加入到所述A集合中形成新的A1集合;
[0019]利用java代码分析所述A1集合中是否包含同一个组件的不同版本;
[0020]若是,则判定所述项目存在依赖冲突;
[0021]否则,判定所述项目不存在依赖冲突。
[0022]可选地,所述方法还包括:
[0023]将分析结果应用到业务中。
[0024]可选地,所述采集开源组件依赖信息的步骤之后还包括:
[0025]将采集的开源组件依赖信息存入mongo中;所述开源组件依赖信息包括:组织Id/公司Id,组件名称和项目名称,版本号,具体的依赖信息。
[0026]本专利技术实施例还提出一种实现依赖冲突分析的装置,所述装置包括:
[0027]采集模块,用于采集开源组件依赖信息;
[0028]存储模块,用于将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系;
[0029]分析模块,用于基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突。
[0030]本专利技术实施例还提出一种处理设备,所述处理设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的实现依赖冲突分析的方法。
[0031]本专利技术实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的实现依赖冲突分析的方法。
[0032]本专利技术实施例提出的一种实现依赖冲突分析的方法、装置、设备及存储介质,通过采集开源组件依赖信息;将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系;基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突。其中,图引擎具体可以为neo4j图引擎。由此,利用neo4j等图引擎存储所有依赖关系,可快速高效地查询依赖关系、无需实际导入依赖即可实现依赖冲突分析,并可进一步将分析结果应用到业务中,如相似组件推荐的兼容性分析。相比现有技术,本专利技术技术方案解决了开源组件maven依赖关系的存储以及开源组件maven依赖冲突的分析、业务应用的技术问题。
附图说明
[0033]图1为本专利技术实现依赖冲突分析的装置所属设备的功能模块示意图;
[0034]图2为本专利技术实现依赖冲突分析的方法一示例性实施例的流程示意图;
[0035]图3为本专利技术实现依赖冲突分析的方法另一示例性实施例的流程示意图;
[0036]图4为本专利技术实现依赖冲突分析的方法又一示例性实施例的流程示意图。
[0037]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0038]应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0039]本专利技术实施例的主要解决方案是:通过采集开源组件依赖信息;将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系;基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突。其中,图引擎具体可以为neo4j图引擎。由此,利用neo4j等图引擎存储所有依赖关系,可快速高效地查询依赖关系、无需实际导入依赖即可实现依赖冲突分析,并可进一步将分析结果应用到业务中,如相似组件推荐的兼容性分析。相比现有技术,本专利技术技术方案解决了开源组件maven依赖关系的存储以及开源组件maven依赖冲突的分析、业务应用的技术问题。
[0040]本专利技术实施例涉及的技术术语:
[0041]maven:指项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于maven的缺省构建规则有较高的可重用性,所以常常用两三行maven构建脚本就可以构建简单的项目。由于maven的面向项目的方法,许多Apache Jakarta项目发文时使用maven,而且公司项目采用maven的比例在持续增长。
[0042]此外,maven也是一款优秀的依赖管理工具。通俗的说,如果一个maven构建所产生的构件(例如Jar文件)被其他项目引用,那么该构件就是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现依赖冲突分析的方法,其特征在于,所述方法包括以下步骤:采集开源组件依赖信息;将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系;基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突。2.根据权利要求1所述的方法,其特征在于,所述采集开源组件依赖信息的步骤包括:通过各网站收集开源maven组件的依赖信息。3.根据权利要求2所述的方法,其特征在于,所述将所述开源组件依赖信息存储至预设的图引擎中,并在所述图引擎中建立各开源组件之间的依赖关系的步骤包括:通过cypher

shell插件将开源maven组件的依赖信息以固定结构存储至图引擎neo4j中,在所述图引擎neo4j中建立各开源maven组件之间的依赖关系。4.根据权利要求3所述的方法,其特征在于,所述基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突的步骤之前还包括:通过第三方SCA工具分析出自研项目的依赖关系,并将所述自研项目的依赖关系存储到图引擎neo4j中。5.根据权利要求4所述的方法,其特征在于,所述基于各开源组件之间的依赖关系,分析各开源组件所在项目是否存在依赖冲突的步骤包括:在java代码中通过图引擎Neo4j提供的traversal框架查询出所述自研项目的所有依赖关系A集合,并查询出需要替换的依赖的所有依赖关系B集合、被替换的依赖的所有依赖关系C集合;将所述A集合中包含的C集合剔除掉,将所述B集...

【专利技术属性】
技术研发人员:万振华
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1