一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

Maven依赖检查方法及装置与流程

2022-02-19 12:00:38 来源:中国专利 TAG:

maven依赖检查方法及装置
技术领域
1.本发明涉及分布式技术领域,尤其涉及一种maven依赖检查方法及装置。


背景技术:

2.maven是一个跨平台的项目管理工具。主要服务于基于java平台的项目构建、依赖管理和项目信息管理。在互联网时代,出于提高成本效率等方面考虑,java应用都会引用一些第三方的类库,随着程序规模变大、依赖增多,类库本身传导依赖复杂等诸多原因,版本的不一致、版本冲突、依赖臃肿等问题接踵而来,幸运的是maven解决了这些繁琐的依赖问题。
3.随着项目膨胀,项目依赖也会越来越多,如果过渡依赖maven的自动依赖解析而不加以管控,产品的组包构建中不知不觉引入了不可预知的风险:版本冲突、冗余包的引入、相互依赖、循环依赖和双向依赖等问题。
4.在外部企业中,就曾因maven的自动引入传递依赖,而使产品在不知不觉中引入了一个病毒jar包而使该企业进入了危机。由于不对maven依赖加以合理使用,导致jar版本错误,使用的插件突然报错,jar包冗余等等问题。


技术实现要素:

5.本发明实施例提出一种maven依赖检查方法,用以实现maven依赖检查,效率高,该方法包括:
6.获取检查配置表,所述检查配置表包括多个检查项对应的检查程序;
7.遍历所述检查配置表,顺序执行所述检查程序;
8.对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;
9.在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。
10.本发明实施例提出一种maven依赖检查装置,用以实现maven依赖检查,效率高,该装置包括:
11.检查配置表获取模块,用于获取检查配置表,所述检查配置表包括多个检查项对应的检查程序;
12.检查模块,用于遍历所述检查配置表,顺序执行所述检查程序;
13.依赖修正模块,用于对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;
14.检查报告生成模块,用于在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。
15.本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述maven依
赖检查方法。
16.本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述maven依赖检查方法的计算机程序。
17.在本发明实施例中,获取检查配置表,所述检查配置表包括多个检查项对应的检查程序;遍历所述检查配置表,顺序执行所述检查程序;对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。在上述过程中,可更新的检查配置表预先配置了多个检查项对应的检查程序,在需要进行maven依赖检查时,只需要遍历表格执行即可,且在检查完毕后,还提供正确依赖的jar包,整体效率高。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
19.图1为本发明实施例中maven依赖检查方法的流程图;
20.图2为本发明实施例中maven依赖检查时使用鱼骨图进行问题梳理的示意图;
21.图3为本发明实施例中maven依赖检查装置的示意图一;
22.图4为本发明实施例中maven依赖检查装置的示意图二;
23.图5为本发明实施例中maven依赖检查装置的示意图三;
24.图6为本发明实施例中计算机设备的示意图。
具体实施方式
25.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
26.在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
27.首先,对本发明实施例中涉及到的术语进行解释。
28.maven:maven是一款构建工具,主要服务于java平台的项目构建、依赖管理和项目信息管理。
29.maven依赖:在互联网时代,出于提高成本效率等方面考虑,java应用都会引用一些第三方的类库,随着程序规模变大、依赖增多,通过maven来导入的这些第三方依赖,则称
为maven依赖。
30.图1为本发明实施例中maven依赖检查方法的流程图,如图1所示,包括:
31.步骤101,获取检查配置表,所述检查配置表包括多个检查项对应的检查程序;
32.步骤102,遍历所述检查配置表,顺序执行所述检查程序;
33.步骤103,对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;
34.步骤104,在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。
35.在本发明实施例中,可更新的检查配置表预先配置了多个检查项对应的检查程序,在需要进行maven依赖检查时,只需要遍历表格执行即可,且在检查完毕后,还提供正确依赖的jar包,整体效率高。
36.在步骤101中,获取检查配置表,所述检查配置表包括多个检查项对应的检查程序。
37.其中,检查项是通过对现有maven依赖检查的问题进行原因分析总结出来的,表1为分析各个问题的具体原因以及分类的示例。
38.表1
[0039][0040]
针对以上出现的问题,首先分析问题的原因,图2为本发明实施例中maven依赖检查时使用鱼骨图进行问题梳理的示意图,通过梳理分析,可这些问题可以归为四类。下面对
每种类别进行逐一分析。
[0041]
1、插件或依赖不写版本号,版本自动更新到最新版本,版本不可控
[0042]
例如:依赖或是插件不写version,或是使用latest,release,snapshot。
[0043]
2、依赖同一个jar包的不同版本
[0044]
3、依赖其他项目,传递依赖引入的包
[0045]
(1)深度依赖引入多余的jar包,导致lib中产生项目并不需要的多余的jar包;
[0046]
(2)深度依赖别人引入的包,自己也需要依赖,但却没有自己显示声明,此类情况存在潜在问题:导致别人依赖的jar包版本变更时,可能不是自己想要的依赖版本。
[0047]
4、内部系统版本升级但是不更新maven版本号,如果之前构建的机器已下载过该版本的jar包,maven仓库则认为没有版本需要更新,因此无法获取到当前需要的版本包。
[0048]
基于上述的问题及归类,本发明实施例自定义了七个检查项,在一实施例中,所述检查项包括依赖冲突检查项、未声明jar包检查项、换包不换号检查项、不合格版本号检查项、漏洞插件检查项、不写版本号检查项、禁用版本号检查项中的其中一种或任意组合。
[0049]
表2为本发明实施例中检查配置表的示例。
[0050]
表2
[0051]
序号检查项检查程序1依赖冲突检查dependencyconflict.sh2未声明jar包检查undeclared.sh3换包不换号检查versionifchange.sh4不合格版本号检查versionifavailable.sh5漏洞插件检查bugcheck.sh6不写版本号versionifexist.sh7禁用版本号检查forbiddenversion.sh
[0052]
根据上述七个检查项,本发明实施例自定义了对应的检查程序。其中,依赖冲突检查项对应的检查程序中的执行步骤包括:
[0053]
通过maven

dependency

versions

check

plugin:check来检查依赖冲突,当发现冲突时,将所述错误依赖jar包对应的信息拼接至错误日志中。
[0054]
未声明jar包检查项对应的检查程序中的执行步骤包括:
[0055]
通过dependency:analyze查看使用但是未显示声明的jar包;
[0056]
通过maven

enforcer

plugin和illegal

transitive

dependency

check插件进行检查,如果有未声明的包,返回未声名的jar包列表的错误日志。
[0057]
换包不换号检查项对应的检查程序中的执行步骤包括:
[0058]
从maven库中获取仓库中存在的版本,与本次打包生成的版本的文件里的md5值比对,如果发现md5值相等,但版本号不变,返回错误日志。
[0059]
不合格版本号检查项对应的检查程序中的执行步骤包括:
[0060]
通过dependency:list查看是否有snapshot\release\latest的依赖存在,返回不合格列表的错误日志,否则继续下一步检查。
[0061]
漏洞插件检查项对应的检查程序中的执行步骤包括:
[0062]
通过dependency

check:check检查是否存在有漏洞的插件,返回有漏洞的插件列
表的错误日志。
[0063]
不写版本号检查项对应的检查程序中的执行步骤包括:
[0064]
扫描pom文件,查看父模块文件和本模块文件是否都未声明版本号,有未声明的版本号,返回该列表的错误日志。
[0065]
禁用版本号检查项对应的检查程序中的执行步骤包括:
[0066]
通过dependency:list查看使用的版本号,与禁用的版本号进行对比,如果存在禁用的版本号的包,返回错误列表日志。
[0067]
在一实施例中,所述方法还包括:
[0068]
在获得新的检查项后,自定义所述该检查项对应的检查程序;
[0069]
将该检查项对应的检查程序添加至所述检查配置表。
[0070]
也就是,该检查配置表可以根据实际情况更新。
[0071]
在步骤102中,遍历所述检查配置表,顺序执行所述检查程序,具体地,根据检查程序的名称(例如dependencyconflict.sh),查找该检查程序,然后执行。
[0072]
步骤103,对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包。
[0073]
在一实施例中,所述方法还包括:
[0074]
若该检查程序的执行结果为存在错误依赖jar包,将所述错误依赖jar包对应的信息拼接至错误日志中;
[0075]
在执行完所有的检查程序后,根据所述错误日志,生成提醒信息,所述提醒信息用于提醒开发人员maven依赖检查存在错误,需修复后再继续。
[0076]
在步骤104中,在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。
[0077]
具体地,变更清单包括错误依赖jar包和正确依赖jar包、详细的变更类,以及错误信息提示,错误信息包括是否替换版本包名、禁用版本、存在漏洞、不合格版本等。检查报告可以打印在后台console,并将通过sametime和邮件发送至开发人员。可以通过maven

site

plugin生成检查报告,里面有丰富的检查信息,其中包含的依赖、依赖收敛、依赖管理、插件管理以可视化的方式展示,便于版本管理人员在出版本时核对。同时还提供一些依赖健康分析,如各模块使用的依赖版本是否一致,项目是否有snapshot依赖。
[0078]
综上所述,在本发明实施例提出的方法中,获取检查配置表,所述检查配置表包括多个检查项对应的检查程序;遍历所述检查配置表,顺序执行所述检查程序;对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。在上述过程中,可更新的检查配置表预先配置了多个检查项对应的检查程序,在需要进行maven依赖检查时,只需要遍历表格执行即可,且在检查完毕后,还提供正确依赖的jar包,整体效率高。
[0079]
本发明还提出一种maven依赖检查装置,其原理与maven依赖检查方法相同,这里不再赘述。
[0080]
图3为本发明实施例中maven依赖检查装置的示意图一,如图3所示,包括:
[0081]
检查配置表获取模块301,用于获取检查配置表,所述检查配置表包括多个检查项
对应的检查程序;
[0082]
检查模块302,用于遍历所述检查配置表,顺序执行所述检查程序;
[0083]
依赖修正模块303,用于对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;
[0084]
检查报告生成模块304,用于在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。
[0085]
图4为本发明实施例中maven依赖检查装置的示意图二,在一实施例中,所述装置还包括提醒信息生成模块401,用于:
[0086]
若该检查程序的执行结果为存在错误依赖jar包,将所述错误依赖jar包对应的信息拼接至错误日志中;
[0087]
在执行完所有的检查程序后,根据所述错误日志,生成提醒信息,所述提醒信息用于提醒开发人员maven依赖检查存在错误,需修复后再继续。
[0088]
在一实施例中,所述检查项包括依赖冲突检查项、未声明jar包检查项、换包不换号检查项、不合格版本号检查项、漏洞插件检查项、不写版本号检查项、禁用版本号检查项中的其中一种或任意组合。
[0089]
图5为本发明实施例中maven依赖检查装置的示意图三,在一实施例中,所述装置还包括检查程序自定义模块501,用于:
[0090]
在获得新的检查项后,自定义所述该检查项对应的检查程序;
[0091]
将该检查项对应的检查程序添加至所述检查配置表。
[0092]
综上所述,本发明实施例提出的方法及装置中,检查配置表获取模块,用于获取检查配置表,所述检查配置表包括多个检查项对应的检查程序;检查模块,用于遍历所述检查配置表,顺序执行所述检查程序;依赖修正模块,用于对于每个检查程序的执行结果,若该检查程序的执行结果为存在错误依赖jar包,获得该检查程序的正确依赖的jar包;检查报告生成模块,用于在执行完所有的检查程序后,根据错误依赖jar包和正确依赖jar包,生成jar包变更清单,根据所述jar包变更清单,生成检查报告。在上述过程中,在上述过程中,可更新的检查配置表预先配置了多个检查项对应的检查程序,在需要进行maven依赖检查时,只需要遍历表格执行即可,且在检查完毕后,还提供正确依赖的jar包,整体效率高。
[0093]
本发明的实施例还提供一种计算机设备,图6为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的maven依赖检查方法中全部步骤,所述计算机设备具体包括如下内容:
[0094]
处理器(processor)601、存储器(memory)602、通信接口(communications interface)603和通信总线604;
[0095]
其中,所述处理器601、存储器602、通信接口603通过所述通信总线604完成相互间的通信;所述通信接口603用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
[0096]
所述处理器601用于调用所述存储器602中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的maven依赖检查方法中的全部步骤。
[0097]
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的maven依赖检查方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机
程序被处理器执行时实现上述实施例中的maven依赖检查方法的全部步骤。
[0098]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0099]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0100]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0101]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0102]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献