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

基于Maven的版本包组包方法及装置与流程

2021-12-04 01:42:00 来源:中国专利 TAG:

基于maven的版本包组包方法及装置
技术领域
1.本发明涉及分布式技术领域,尤其涉及一种基于maven的版本包组包方法及系统。


背景技术:

2.在生产bug中,有很大一部分来源于组包错误,具体包括maven依赖、环境等造成的组包错误,最后导致多种生成问题,因此,需要一种有效的组包方法。


技术实现要素:

3.本发明实施例提出一种基于maven的版本包组包方法,用以实现基于maven的版本包组包,可提高版本包组包的准确度,该方法包括:
4.检查maven项目中待组包的代码块之间是否存在版本依赖冲突;
5.若否,检查待组包的代码块之间是否存在隐式依赖;
6.若否,检查待组包的代码块之间是否存在非指定版本;
7.若否,根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;
8.基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;
9.检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。
10.本发明实施例提出一种基于maven的版本包组包装置,用以实现基于maven的版本包组包,可提高版本包组包的准确度,该装置包括:
11.版本依赖冲突检查模块,用于检查maven项目中待组包的代码块之间是否存在版本依赖冲突;
12.隐式依赖检查模块,用于检查待组包的代码块之间是否存在隐式依赖;
13.非指定版本检查模块,用于检查待组包的代码块之间是否存在非指定版本;
14.工具集获得模块,用于根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;
15.组包模块,用于在待组包的代码块之间不存在版本依赖冲突,且待组包的代码块之间不存在隐式依赖,且待组包的代码块之间不存在非指定版本,基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;
16.配置文件检查模块,用于检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。
17.本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于maven的版本包组包方法。
18.本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储
有执行上述基于maven的版本包组包方法的计算机程序。
19.在本发明实施例中,检查maven项目中待组包的代码块之间是否存在版本依赖冲突;若否,检查待组包的代码块之间是否存在隐式依赖;若否,检查待组包的代码块之间是否存在非指定版本;若否,根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。在上述过程中,在组包前,对待组包的代码块进行了综合性的检查,包括版本依赖冲突、隐式依赖、非指定版本,实现了提前规避maven依赖管理风险。而组包所需docker环境中的工具集进行封装,可以规避环境不一致引入的风险,同时也减少了环境的重复配置,可按需拉取,按需构建;配置文件的检查减少了生成的版本包部署时的导包错误、部署错误、甚至是运行阶段时参数客户化不全导致的错误。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
21.图1为本发明实施例中基于maven的版本包组包方法的流程图;
22.图2为本发明实施例中基于maven的版本包组包方法的详细流程图;
23.图3为本发明实施例中基于maven的版本包组包装置的示意图一;
24.图4为本发明实施例中基于maven的版本包组包装置的示意图二;
25.图5为本发明实施例中计算机设备的示意图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
27.在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
28.首先,对本发明实施例中涉及到的术语进行解释。
29.maven:maven是一款构建工具,主要服务于java平台的项目构建、依赖管理和项目信息管理。
30.maven依赖:在互联网时代,出于提高成本效率等方面考虑,java应用都会引用一些第三方的类库,随着程序规模变大、依赖增多,通过maven来导入的这些第三方依赖,则称
为maven依赖。
31.maven传递依赖:a
‑‑
>c b
‑‑
>a==>b
‑‑
>c,即a依赖于c,b依赖于a,则b依赖于c。
32.maven依赖冲突:依赖同一个jar包的不同版本。例如:如果a依赖于b的1.0版本,c依赖于b的1.1版本,d依赖于a和c,d依赖的b的版本冲突,这时在d的pom中哪一个依赖先写就使用先写依赖的版本;如果a依赖于b的1.0版本,c依赖于b的1.1版本,d依赖于a和c,f依赖于d和c,b依然版本冲突,maven会根据依赖的路径的长短不一致就选择最小的。
33.maven依赖冲突问题:如果maven出现依赖冲突maven会根据上述规则自动进行版本选择,这会导致可能会引入一个非项目需要的版本的依赖。
34.maven隐式依赖:a依赖b,根据传递依赖原则,当项目声明了依赖a,则自动引入了b,项目隐式依赖于b。
35.maven隐式依赖问题:maven项目代码中直接使用b的接口却并未显示声明,但如果依赖a版本变更时,b的版本也可能随之变更,而代码中使用的接口还是之前版本的接口,导致的错误。
36.maven引入非指定版本问题:maven依赖不写version版本号,或是使用latest,release,snapshot等导致组包时maven根据构建时情况拉取对应的版本包,而固定的版本包,而这个变更的版本也许与之前的版本并不兼容。
37.组包配置文件遗漏:自动部署的配置文件,是版本包能自动部署的前提。组包配置文件遗漏将导致无法自动部署。
38.图1为本发明实施例中基于maven的版本包组包方法的流程图,如图1所示,包括:
39.步骤101,检查maven项目中待组包的代码块之间是否存在版本依赖冲突;
40.步骤102,若否,检查待组包的代码块之间是否存在隐式依赖;
41.步骤103,若否,检查待组包的代码块之间是否存在非指定版本;
42.步骤104,若否,根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;
43.步骤105,基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;
44.步骤106,检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。
45.在本发明实施例中,在组包前,对待组包的代码块进行了综合性的检查,包括版本依赖冲突、隐式依赖、非指定版本,实现了提前规避maven依赖管理风险。而组包所需docker环境中的工具集进行封装,可以规避环境不一致引入的风险,同时也减少了环境的重复配置,可按需拉取,按需构建;配置文件的检查减少了部署时的导包错误、部署错误、甚至是运行阶段时参数客户化不全导致的错误。
46.在步骤101中,检查maven项目中待组包的代码块之间是否存在版本依赖冲突。
47.在一实施例中,所述方法还包括:
48.若待组包的代码块之间存在版本依赖冲突,生成版本依赖冲突提示信息;
49.接收开发人员根据所述版本依赖冲突提示信息选定的代码块版本。这样可以排出不需要版本,再次构建后会构建成功。版本依赖冲突检查可以通过maven

dependency

versions

check

plugin插件实现。
50.步骤102,若否,检查待组包的代码块之间是否存在隐式依赖。
51.在一实施例中,所述方法还包括:
52.若待组包的代码块之间存在隐式依赖,生成版本存在隐式依赖提示信息;
53.接收开发人员根据版本存在隐式依赖提示信息勾选的显示声明需要代码块版本。
54.隐式依赖检查可通过maven

enforcer

plugin插件实现。还可通过配置插件maven

enforcer

plugin和illegal

transitive

dependency

check来检查引用是否隐式依赖,并设置报警或是报错。
55.步骤103,若否,检查待组包的代码块之间是否存在非指定版本。
56.当发现代码块没有指定版本或版本是latest,release,snapshot,则存在非指定版本。
57.在一实施例中,所述方法还包括:
58.若待组包的代码块之间存在非指定版本,禁用所述非指定版本。
59.在上述实施例中,通过maven

enforcer

plugin插件的enforce目标的requirepluginversions配置选项来强制禁止使用latest,release,snapshot或是不写的情况。
60.步骤104,若否,根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集。
61.上述工具集包括jdk6,jdk7,jdk8,npm7,npm8,gcc等,在组包时,根据项目指定的环境清单,选择相应的工具集组包。
62.步骤105,基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包。
63.具体组包步骤包括编译、构建、静态代码检查、maven包组包、自动部署版本包组包。
64.步骤106,检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。
65.在一实施例中,所述方法还包括:
66.若所述版本包不正确,生成配置文件错误提示信息。
67.开发人员根据配置文件错误提示信息,需要修改代码进行重新组包,符合组包规范后才可以组包成功并上传版本库。
68.在一实施例中,检查所述版本包所需的配置文件是否正确,包括:
69.在组包所需docker环境中,基于配置文件检查的jar包和脚本,检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。
70.在现在的devops自动部署中,我们的版本都需要符合一定的自动部署版本打包规范,而如果我们的组包不符合规范时,就会在自动部署系统中在导包错误、或是部署阶段出现错误、甚至在运行中出现错误。
71.例如:
72.如果自动部署的配置文件不全,会存在导包错误。
73.而在配置文件中,部署目录字段为空,则在部署阶段才会报错。
74.而参数提取不全,则由于参数没有客户化,直到运行时才会发现,问题更为严重。
因此,我们需要提供版本组包错误的检查机制和方法。
75.为了可以灵活为不同的云平台的devops部署平台提供检查插件,对所述配置文件进行如下检查中的至少一种:
76.配置文件完备性检查,模块类型完备性检查,打包名称和部署名称完备性检查,文件编码格式检查,参数提取完备性检查,配置文件格式检查。
77.其中,上述检查都提供了检查模板,以实现快速且准确地检查。
78.a)配置文件完备性检查:检查自动部署所需的配置文件是否全部存在。
79.b)模块类型完备性检查:检查自动部署的版本包的模块单元的配置文件是否包括模块类型:apachfg、apachegb、jboss、service、mysql等,以便进行自动部署时,选择适当的部署引擎对版本进行部署。
80.c)打包名称和部署名称完备性检查:检查版本包配置文件是否配置了打包文件名和部署目录名,不存在时报错。避免部署时无法创建部署目录而报错。
81.d)文件编码格式检查:需要是utf

8且无bom头,否则报错。避免自动部署系统解析配置文件时由于编码问题,解析错误。
82.e)参数提取完备性检查:${}类型的参数是否全部提取维护到parameter.txt的配置文件中。通过扫描parameterfilelist下的配置文件,查看${}格式的参数,与parameterlist.txt的维护的配置文件清单进行比对,如果有参数在parameterlist.txt不存在,则组包错误。
83.f)配置文件格式检查:通过规范文件格式要求,检查配置文件是否满足规范格式。
84.其中:我们可以提供客户化方式定制的模板,为不同的自动部署平台提供版本包检查。
85.配置文件完备性检查:模板包括参数文件路径和文件名称,支持简单的前缀和后缀还有正则表达式。
86.模块类型完备性检查:模板包括定义的文件路径和行号对应位置,及对应的模块类型列表。
87.打包名称和部署名称完备性检查:模板包括打包名称和部署名称配置的路径和文件位置。
88.文件编码格式检查:模板支持utf

8格式检查。
89.参数提取完备性检查:模板包括文件路径列表配置文件路径、参数列表路径。
90.配置文件格式检查:模板支持文件类型[txt,excel],列数,空格检查。
[0091]
综合上述实施例,图2为本发明实施例中基于maven的版本包组包方法的详细流程图,具体步骤包括:
[0092]
步骤201,检查maven项目中待组包的代码块之间是否存在版本依赖冲突;若是,转至步骤202;若否,转至步骤203;
[0093]
步骤202,生成版本依赖冲突提示信息;接收开发人员根据所述版本依赖冲突提示信息选定的代码块版本。
[0094]
步骤203;检查待组包的代码块之间是否存在隐式依赖;若是,转至步骤204;若否,转至步骤205;
[0095]
步骤204,生成版本存在隐式依赖提示信息;接收开发人员根据版本存在隐式依赖
提示信息勾选的显示声明需要代码块版本。
[0096]
步骤205,检查待组包的代码块之间是否存在非指定版本;若是,转至步骤206;若否,转至步骤207;
[0097]
步骤206,禁用所述非指定版本;
[0098]
步骤207,根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;
[0099]
步骤208,基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;
[0100]
步骤209,检查所述版本包所需的配置文件是否正确,若是,转至步骤210;若否,转至步骤211;
[0101]
步骤210,获得组包正确的maven的版本包;
[0102]
步骤211,生成配置文件错误提示信息。
[0103]
本发明还提出一种基于maven的版本包组包装置,其原理与基于maven的版本包组包方法相同,这里不再赘述。
[0104]
图3为本发明实施例中基于maven的版本包组包装置的示意图一,如图3所示,包括:
[0105]
版本依赖冲突检查模块301,用于检查maven项目中待组包的代码块之间是否存在版本依赖冲突;
[0106]
隐式依赖检查模块302,用于检查待组包的代码块之间是否存在隐式依赖;
[0107]
非指定版本检查模块303,用于检查待组包的代码块之间是否存在非指定版本;
[0108]
工具集获得模块304,用于根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;
[0109]
组包模块305,用于在待组包的代码块之间不存在版本依赖冲突,且待组包的代码块之间不存在隐式依赖,且待组包的代码块之间不存在非指定版本,基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;
[0110]
配置文件检查模块306,用于检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。
[0111]
图4为本发明实施例中基于maven的版本包组包装置的示意图二,在一实施例中,所述装置还包括异常处理模块401,用于若待组包的代码块之间存在版本依赖冲突,生成版本依赖冲突提示信息;
[0112]
接收开发人员根据所述版本依赖冲突提示信息选定的代码块版本。
[0113]
在一实施例中,异常处理模块401还用于:
[0114]
若待组包的代码块之间存在隐式依赖,生成版本存在隐式依赖提示信息;
[0115]
接收开发人员根据版本存在隐式依赖提示信息勾选的显示声明需要代码块版本。
[0116]
在一实施例中,异常处理模块401还用于:
[0117]
若待组包的代码块之间存在非指定版本,禁用所述非指定版本。
[0118]
在一实施例中,异常处理模块401还用于:
[0119]
若所述版本包不正确,生成配置文件错误提示信息。
[0120]
在一实施例中,配置文件检查模块具体用于:
[0121]
对所述配置文件进行如下检查中的至少一种:
[0122]
配置文件完备性检查,模块类型完备性检查,打包名称和部署名称完备性检查,文件编码格式检查,参数提取完备性检查,配置文件格式检查。
[0123]
在一实施例中,配置文件检查模块具体用于:
[0124]
在组包所需docker环境中,基于配置文件检查的jar包和脚本,检查所述版本包所需的配置文件是否正确。
[0125]
综上所述,本发明实施例提出的方法及装置中,版本依赖冲突检查模块,用于检查maven项目中待组包的代码块之间是否存在版本依赖冲突;隐式依赖检查模块,用于检查待组包的代码块之间是否存在隐式依赖;非指定版本检查模块,用于检查待组包的代码块之间是否存在非指定版本;工具集获得模块,用于根据maven项目的环境清单,从封装后的组包所需docker环境中的工具集中选择本次组包所需的工具集;组包模块,用于在待组包的代码块之间不存在版本依赖冲突,且待组包的代码块之间不存在隐式依赖,且待组包的代码块之间不存在非指定版本,基于本次组包所需的工具集,进行待组包的代码块的组包,生成maven项目的版本包;配置文件检查模块,用于检查所述版本包所需的配置文件是否正确,若是,获得组包正确的maven的版本包。在上述过程中,在组包前,对待组包的代码块进行了综合性的检查,包括版本依赖冲突、隐式依赖、非指定版本,实现了提前规避maven依赖管理风险。而组包所需docker环境中的工具集进行封装,可以规避环境不一致引入的风险,同时也减少了环境的重复配置,可按需拉取,按需构建;配置文件的检查减少了生成的版本包部署时的导包错误、部署错误、甚至是运行阶段时参数客户化不全导致的错误。本发明的实施例还提供一种计算机设备,图5为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的基于maven的版本包组包方法中全部步骤,所述计算机设备具体包括如下内容:
[0126]
处理器(processor)501、存储器(memory)502、通信接口(communications interface)503和通信总线504;
[0127]
其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
[0128]
所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的基于maven的版本包组包方法中的全部步骤。
[0129]
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的基于maven的版本包组包方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于maven的版本包组包方法的全部步骤。
[0130]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

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

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

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

相关文献