CN111309713A - Maven开源软件库的生成方法、装置及存储介质 - Google Patents
Maven开源软件库的生成方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111309713A CN111309713A CN202010404730.3A CN202010404730A CN111309713A CN 111309713 A CN111309713 A CN 111309713A CN 202010404730 A CN202010404730 A CN 202010404730A CN 111309713 A CN111309713 A CN 111309713A
- Authority
- CN
- China
- Prior art keywords
- maven
- source software
- open source
- parameters
- names
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种Maven开源软件库的生成方法、装置、电子设备及存储介质,其中,方法包括:构建多个参数并生成参数表,且参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;将参数表中的多个参数依次代入至Maven提供的第一接口,且第一接口用于匹配并返回分别与多个参数相关的Maven开源软件的组织名称及组件名称;将第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,且第二接口用于查找并返回Maven开源软件的版本名称;根据Maven提供的每一个接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。本发明几乎能够找到所有Maven开源软件的相关信息,保证了生成的Maven开源软件库的完整性和准确性。
Description
技术领域
本发明涉及软件库生成技术领域,尤其是指一种Maven开源软件库的生成方法、装置、电子设备及存储介质。
背景技术
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,而Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。近些年来,Java语言凭借其功能强大、简单易用、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,被广泛应用于编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,同时作为Java开发的标准组件格式的Maven开源软件(以下简称Maven软件)也得到了极其广泛的应用。
Maven软件主要由三个字段组成,分别是组织名称(groupid)、组件名称(artifactid)及版本名称(version),以下简称g、a及v。这三个字段相当于一个Maven软件的坐标,即每一个Maven软件的g、a及v均是唯一的。另外,每一个Maven软件都会对应一个根据文件的内容计算出来的哈希码,此哈希码相当于人类的指纹,即在绝大多数情况下,任意两个Maven软件的哈希码是不同的,即使是相同的,也可以根据每个Maven软件的g、a及v加以区分。在分析应用软件的时候,可以直接根据扫描出来的Maven开源软件的哈希码即可匹配该开源软件的组件构成信息。然而,如果没有Maven开源软件库,那便需要实时对应用组成里的组件进行扫描分析,然后进行计算哈希码加以识别等多个操作,耗时耗力,故Maven开源软件库对于软件的组成分析来说,是具有很大帮助的。
目前,现有的Maven开源软件库的生成方法,大多是单一步骤的数据获取,无法保证数据的完整性和准确性,即每一个Maven开源软件的g、a及v不完整,缺失了很大部分的g、a及v数据,从而给软件的组成分析带来了极大地不确定性。
因此,有必要对现有的Maven开源软件库的生成方法进行改进。
发明内容
本发明所要解决的技术问题是:提供一种Maven开源软件库的生成方法、装置、电子设备及存储介质,旨在解决现有的Maven开源软件库的生成方法,无法保证数据的完整性和准确性的问题。
为了解决上述技术问题,本发明采用的技术方案为:
本发明实施例第一方面提供了一种Maven开源软件库的生成方法,包括如下步骤:
构建多个参数并生成参数表,所述参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;
将所述参数表中的多个参数依次代入至Maven提供的第一接口,所述第一接口用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个所述参数相关的Maven开源软件的组织名称及组件名称;
将所述第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,所述第二接口用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称;
根据Maven提供的每一个所述接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。
进一步地,所述将所述第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口之后,还包括:
将所述第一接口及第二接口返回的所有Maven开源软件的组织名称、组件名称及版本名称依次代入至Maven提供的第三接口,所述第三接口用于对第一接口及第二接口返回的所有Maven开源软件的组织名称、组件名称及版本名称进行对应拼接,生成并返回所有Maven开源软件的哈希码。
进一步地,所述根据Maven提供的每一个所述接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库之后,还包括:
将经所述第三接口对应拼接后的所有Maven开源软件的组织名称、组件名称及版本名称依次代入至Maven提供的第四接口,所述第四接口用于下载所有与Maven开源软件的组织名称、组件名称及版本名称对应的Maven开源软件的pom文件。
进一步地,所述将经所述第三接口对应拼接后的所有Maven开源软件的组织名称、组件名称及版本名称依次代入至Maven提供的第四接口之后,还包括:
对所述pom文件内的dependencies元素下的每一个dependency进行解析,获得每一个所述dependency的相关信息,且每一个所述dependency均为Maven开源软件;
判断每一个所述dependency的相关信息是否存在于Maven开源软件库,若否,则将每一个所述dependency的相关信息存储至Maven开源软件库。
进一步地,多个所述参数均为26个字母的随机组合,且任一所述参数的长度不大于5个字母长度。
进一步地,该Maven开源软件库的生成方法还包括:
获取所述Maven开源软件库中所有的组织名称并依次代入至Maven提供的第五接口,所述第五接口用于根据组织名称,查询并返回所述组织名称下的所有组件名称,并将返回的所述组件名称存储至Maven开源软件库;
获取所述Maven开源软件库中所有的组织名称及组件名称并依次代入至Maven提供的第六接口,所述第六接口用于根据所述组织名称及组件名称,查询并返回所述组织名称及组件名称下的所有版本名称,并将返回的所述版本名称存储至Maven开源软件库。
进一步地,该Maven开源软件库的生成方法还包括:
判断任一接口返回分别与多个参数相关的Maven开源软件的相关信息是否异常,若是,则根据多个所述参数生成异常参数表;
分别判断所述异常参数表中的多个参数是否属于第一类异常参数或第二类异常参数,若所述异常参数表中的多个参数属于第一类异常参数,则将所述异常参数表中的多个参数重新依次代入至第一接口并相应删除异常参数表中的参数,若所述异常参数表中的多个参数属于第二类异常参数,则根据所述异常参数表中的多个参数修改相关程序,修改后的所述相关程序,在将所述参数表中的多个参数依次代入至第一接口时,可捕获并跳过所述异常参数表中的多个参数。
本发明实施例第二方面提供了一种Maven开源软件库的生成装置,其包括:
构建模块,用于构建多个参数并生成参数表,所述参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;
第一获取模块,用于将所述参数表中的多个参数依次代入至Maven提供的第一接口,所述第一接口用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个所述参数相关的Maven开源软件的组织名称及组件名称;
第二获取模块,用于将所述第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,所述第二接口用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称;
生成模块,用于根据Maven提供的每一个所述接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。
本发明实施例第三方面提供了一种电子设备,其包括:
存储装置及一个或多个处理器,所述存储装置用于存储一个或多个程序,其中,当所述一个或多个程序被一个或多个处理器执行时,使得所述一个或多个处理器执行如本发明实施例第一方面提供的Maven开源软件库的生成方法。
本发明实施例第四方面提供了一种存储介质,其上存储有可执行指令,该可执行指令被执行时执行如本发明实施例第一方面提供的Maven开源软件库的生成方法。
从上述描述可知,本发明的有益效果在于:
本发明第一步,构建多个被定义为任一Maven开源软件的组织名称或组件名称的部分关键词的参数并生成参数表;第二步,将参数表中的多个参数依次代入至Maven提供的,用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个参数相关的Maven开源软件的组织名称及组件名称的第一接口,以获得所有Maven开源软件的组织名称及组件名称;第三步,将第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的,用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称的第二接口,以获得所有Maven开源软件的版本名称;第四步,根据Maven提供的所有接口返回的所有Maven开源软件的信息,生成Maven开源软件库。本发明构建了多个被定义为任一Maven开源软件的组织名称或组件名称的部分关键词的参数,通过这些参数与所有Maven开源软件的组织名称或组件名称的关键词进行匹配,几乎能够找到所有Maven开源软件的相关信息,使得通过上述四个步骤生成的Maven开源软件库内的数据更加完整,在最大程度上保证了Maven开源软件库的完整性和准确性。
附图说明
图1为本发明第一实施例提供的Maven开源软件库的生成方法的流程图;
图2为本发明第一实施例提供的Maven开源软件库的示例;
图3为本发明第一实施例提供的Maven提供的第一接口返回的分别与多个参数相关的Maven开源软件的组织名称及组件名称示例;
图4为本发明第一实施例提供的Maven提供的第二接口返回的Maven开源软件的版本名称示例;
图5为本发明第二实施例提供的一种Maven开源软件库的生成方法的流程图;
图6为本发明第二实施例提供的另一种Maven开源软件库的生成方法的流程图;
图7为连接图6的本发明第二实施例提供的另一种Maven开源软件库的生成方法的流程图;
图8为本发明第二实施例提供的pom文件示例;
图9为本发明第二实施例提供的参数表示例;
图10为本发明第二实施例提供的Maven开源软件的第五接口返回的组织名称下的所有组件名称示例;
图11为本发明第二实施例提供的异常参数表示例;
图12为本发明第三实施例提供的Maven开源软件库的生成装置的模块方框图;
图13为本发明第四实施例提供的电子设备的模块方框图;
图14为本发明第五实施例提供的存储介质的模块方框图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
实施例
请参阅图1、图2、图3以及图4,图1为本发明第一实施例提供的Maven开源软件库的生成方法的流程图,图2为本发明第一实施例提供的Maven开源软件库的示例,图3为本发明第一实施例提供的Maven提供的第一接口返回的分别与多个参数相关的Maven开源软件的组织名称及组件名称示例,图4为本发明第一实施例提供的Maven提供的第二接口返回的Maven开源软件的版本名称示例。
如图1所示,本发明第一实施例提供的Maven开源软件库的生成方法包括如下步骤:
S110、构建多个参数并生成参数表,且参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;
S120、将参数表中的多个参数依次代入至Maven提供的第一接口,且第一接口用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个参数相关的Maven开源软件的组织名称及组件名称;
S130、将第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,且第二接口用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称;
S140、根据Maven提供的所有接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。
需要说明的是,于本实施例中,对第一接口及第二接口进行举例说明,比如第一接口的url地址为:
第二接口的url地址为:
可选的,于其他实施例中,如图2所示,生成的Maven开源软件库不限于包括Maven开源软件的组织名称(groupid,以下简写为g)、组件名称(artifactid,以下简写为a)及版本名称(version,以下简写为v),还可以包括Maven开源软件的哈希吗(如图2中的hash)、稳定版本的发布日期(如图2中的release_date)、最新版本的稳定版本的发布日期(如图2中的latest_release_date)、最新的版本号(如图2中的latest_version)、与最新版本相差的版本数值(如图2中的versions_behind)、许可id(如图2中的license_id)及Maven开源软件库的主键(如图2中的id)等等。
需要了解的是,于本实施例中,Maven开源软件的g或a的关键词为去掉符号后完整的单词,比如某一Maven开源软件的g为com.tomtom.speedtools,那么此时该g的关键词就是com,tomtom及speedtools。
需要了解的是,于本实施例中,一个g可能对应多个a,而一个a同样可能对应多个v,比如开源组织apache下有tomcat、mq等开源软件,而tomcat、mq等开源软件又分别有多个版本,1.0、2.0等。
需要了解的是,于本实施例中,第一接口返回的分别与多个参数相关的Maven开源软件的g及a如图3所示,图3中的docs里面的代码表示的是第一接口返回所有信息,其中的g及a分别代表组织名称及组件名称,latestversion为最新的版本号。
还需要了解的是,于本实施例中,第二接口返回的Maven开源软件的v如图4所示,图4中的numfound及后面的数值表示当前的g、a所对应的Maven开源软件的所有版本有14个,也就是说图4中的docs里面存在有14条记录,每一条记录里面都存在不同的g、a、v组合,而图4中的timestamp为当前的g、a所对应的Maven开源软件的发布日期。另外,可以根据第二接口返回的信息,判断当前的Maven开源软件的版本与最新版本之间相差的版本数值,比如图4中的numfound为14,也就是说第1个版本为最新版本,第2个版本为比第1个版本稍旧的版本,以此类推,第14个版本就是最旧的版本,那么当前的Maven开源软件的版本与最新版本之间相差的版本数值为14减1,即13。
另外,需要说明的是,于本实施例中,第一接口返回分别与多个参数相关的Maven开源软件的g及a及第二接口返回Maven开源软件的v时,都会存在一个返回记录条数rows,而row是需要调节至足够大的,比如将某一参数代入至第一接口时,与该参数相关的Maven开源软件的组织名称、组件名称共有200个,也就是说第一接口实际应当返回的记录条数为100条,此时如果rows被设置为10,那么第一接口只会返回10条记录,如果rows被设置为1000,那么第一接口将会返回全部的100条记录。
本发明第一实施例提供的的Maven开源软件库的生成方法,第一步,构建多个被定义为任一Maven开源软件的组织名称或组件名称的部分关键词的参数并生成参数表;第二步,将参数表中的多个参数依次代入至Maven提供的,用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个参数相关的Maven开源软件的组织名称及组件名称的第一接口,以获得所有Maven开源软件的组织名称及组件名称;第三步,将第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的,用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称的第二接口,以获得所有Maven开源软件的版本名称;第四步,根据Maven提供的所有接口返回的所有Maven开源软件的信息,生成Maven开源软件库。本发明构建了多个被定义为任一Maven开源软件的组织名称或组件名称的部分关键词的参数,通过这些参数与所有Maven开源软件的组织名称或组件名称的关键词进行匹配,几乎能够找到所有Maven开源软件的相关信息,使得通过上述四个步骤生成的Maven开源软件库内的数据更加完整,在最大程度上保证了Maven开源软件库的完整性和准确性。
请参阅图5、图6、图7、图8、图9以及图10,图5为本发明第二实施例提供的一种Maven开源软件库的生成方法的流程图,图6为本发明第二实施例提供的另一种Maven开源软件库的生成方法的流程图,图7为本发明第二实施例提供的pom文件示例,图8为本发明第二实施例提供的参数表示例,图9为本发明第二实施例提供的Maven开源软件的第五接口返回的组织名称下的所有组件名称示例,图10为本发明第二实施例提供的异常参数表示例。
与本发明第一实施例提供的Maven开源软件库的生成方法所不同的是,在本发明第二实施例中:
进一步地,如图5所示,步骤S120之后还包括:
S210、将第一接口及第二接口返回的所有Maven开源软件的g、a及v依次代入至Maven提供的第三接口,且第三接口用于对第一接口及第二接口返回的所有Maven开源软件的g、a及v进行对应拼接,生成并返回所有Maven开源软件的哈希码。
需要说明的是,于本实施例中,对第三接口进行举例说明,比如第三接口的url地址为:
需要了解的是,于本实施例中,对于哈希码的形式进行举例说明,如下所示:
6dacbe18e5eaa7f6c9c36db33b42e7985e94ce77。
进一步地,如图5所示,步骤S140之后还包括:
S310、将经第三接口对应拼接后的所有Maven开源软件的g、a及v依次代入至Maven提供的第四接口,且第四接口用于下载所有与Maven开源软件的g、a及v对应的Maven开源软件的pom文件;
S320、对pom文件内的dependencies元素下的每一个dependency进行解析,获得每一个dependency的相关信息;
S330、判断每一个dependency的相关信息是否存在于Maven开源软件库,若否,则将每一个dependency的相关信息存储至Maven开源软件库。
需要说明的是,于本实施例中,对第四接口进行举例说明,比如第四接口的url地址为:
需要了解的是,于本实施例中,pom文件的形式如图7所示,图7中存在一个dependencies元素,dependencies元素内的每一个dependency同样也都是一个Maven开源软件。
需要说明的是,于本实施例中,对pom文件内的dependencies元素下的每一个dependency进行解析,获得每一个dependency的相关信息时,同时需要下载每一个dependency的pom文件,继续对每一个dependency的pom文件内的dependencies元素下的每一个dependency进行解析,以此类推形成一个递归,以查找更多的Maven开源软件的相关信息。
另外,于本实施例中,Maven开源软件的许可id可通过检索特征文件获得,如解析pom文件。
进一步地,步骤S110构建的多个参数均为26个字母的随机组合,且任一参数的长度不大于5个字母长度。
需要了解的是,于本实施例中,多个参数均为26个字母的随机组合,如一个字母的形式:a、b、c等;两个字母的形式:aa、ab、ac等;三个字母的形式:aaa、aab、aac等;四个字母的形式:aabb、acbe、bbeg等;五个字母的形式:guicc,guics,guice等。而且在保证多个参数与所有Maven开源软件的g或a的关键词进行匹配的效率的前提下,任一参数的长度优选为不大于5个字母长度,此时,基本可以覆盖所有Maven开源软件的g和a中的关键词。另外,于其他实施例中,根据实际工作,任一参数的长度可以大于5个字母长度,比如6个字母长度、7个字母长度等。
还需要了解的是,于本实施例中,如图8所示,步骤S110生成的参数表中不限于包括26个字母的随机组合(如图8中的word),还可以包括每一26个字母的随机组合的编号(如图8中的id)、状态信息(如图8中的status)及创建时间(如图8中的create_time)等等。其中,status包括4种状态,分别为初始状态(以0表示)、正在执行状态(以1表示)、成功状态(以2表示)及失败状态(以3表示)。也就是说,参数表刚刚生成时,所有的word的status均为0;将参数表中某一word代入至第一接口时,该word的status为1;第一接口已经成功地返回与参数表中某一word相关的Maven开源软件的g和a时,参数表中该word的status为2;第一接口返回与参数表中某一word相关的Maven开源软件的g和a异常时,参数表中该word的status为3。
进一步地,如图6所示,该Maven开源软件库的生成方法还包括如下步骤:
S410、获取Maven开源软件库中所有的g并依次代入至Maven提供的第五接口,且第五接口用于根据g,查询并返回g下的所有a,并将返回的a存储至Maven开源软件库;
S420、获取Maven开源软件库中所有的g及a并依次代入至Maven提供的第六接口,且第六接口用于根据g及a,查询并返回g及a下的所有v,并将返回的v存储至Maven开源软件库。
需要说明的是,于本实施例中,对第五接口及第六接口进行举例说明,比如第五接口的url地址为:
第六接口的url地址为:
需要了解的是,于本实施例中,第五接口返回的g下的所有a如图9所示,图9中的numfound及后面的数值表示返回的a的数量,也就是说,图9中返回的a共有4个,分别为jdk8-tests、guice等。
可选的,于其他实施例中,对于新开发出来的Maven开源组织,只需将该Maven开源组织的g代入至Maven提供的第六接口即可。
进一步地,如图6所示,该Maven开源软件库的生成方法还包括如下步骤:
S510、判断任一接口返回分别与多个参数相关的Maven开源软件的相关信息是否异常,若是,则根据多个所述参数生成异常参数表;
S520、分别判断异常参数表中的多个参数是否属于第一类异常参数或第二类异常参数,若异常参数表中的多个参数属于第一类异常参数,则将异常参数表中的多个参数重新依次代入至第一接口并相应删除异常参数表中的参数,若异常参数表中的多个参数属于第二类异常参数,则根据异常参数表中的多个参数修改相关程序,修改后的相关程序,在将参数表中的多个参数依次代入至第一接口时,可捕获并跳过异常参数表中的多个参数。
需要说明的是,于本实施例中,比如将参数表中某一参数代入至第一接口时,由于网络或者第一接口的服务等原因,导致第一接口返回的Maven开源软件的g、a异常,此时该参数是可以正常获得与该参数相关的Maven开源软件的,此类参数便为第一类异常参数;比如将参数表中某一参数代入至第一接口时,出现了第一接口不合法的错误,也就是说该参数导致了整个第一接口失效,此类参数便为第二类异常参数。
需要了解的是,于本实施例中,如图10所示,异常参数表不限于包括导致异常的参数,还可以包括与某一参数对应的Maven开源软件的g、a及v,以及该Maven开源软件的哈希码,以及异常类型(如图10中的code)、处理状态(如图10中的type)、异常的详细信息(如图10中的message)等,其中code有网络异常、未找到pom文件、代码逻辑异常等。
本发明第二实施例提供的Maven开源软件库的生成方法,第一方面,通过Maven提供的第二接口,可以获得Maven开源软件的哈希码,完善了Maven开源软件库的数据;第二方面,对pom文件内的dependencies元素下的每一个dependency进行解析,获得每一个dependency的相关信息时,形成了递归模式,可以获得更多Maven开源软件的相关信息,进一步完善了Maven开源软件库的数据;第三方面,所构建的多个参数均为26个字母的随机组合,且任一参数的长度不大于5个字母长度,可以在基本覆盖所有Maven开源软件的g及a的关键词的前提下,缩短第一接口的工作时间,即获取所有Maven开源软件的g及a的时间,提升了生成Maven开源软件库的速度,避免了无效的劳动;第四方面,通过Maven提供的第五接口及第六接口,对Maven开源软件库进行实时更新,保证了Maven开源软件库中数据的完整性和准确性;第五方面,对于新开发出来的Maven开源组织,只需将该Maven开源组织的g代入至Maven提供的第六接口即可,进一步地保证了Maven开源软件库的完整性和准确性;第六方面,若判断异常参数表中的多个参数属于第一类异常参数,则将异常参数表中的多个参数重新依次代入至第一接口,以重新获得异常参数表中的多个参数所对应的Maven开源软件的g、a,更进一步地保证了Maven开源软件库的完整性和准确性;第七方面,若判断异常参数表中的多个参数属于第二类异常参数,则根据异常参数表中的多个参数修改相关程序,修改后的相关程序,在将参数表中的多个参数依次代入至第一接口时,可捕获并跳过异常参数表中的多个参数,避免了下一次执行程序时依然出现异常信息及重复将第二类异常参数代入至第一接口,所导致的延长生成Maven开源软件库时间的问题。
请参阅图11,图11为本发明第三实施例提供的Maven开源软件库的生成装置的模块方框图。
如图11所示,与本发明第一实施例提供的Maven开源软件库的生成方法相对应的,本发明第三实施例提供的Maven开源软件库的生成装置100包括:
构建模块101,用于构建多个参数并生成参数表,且参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;
第一获取模块102,用于将参数表中的多个参数依次代入至Maven提供的第一接口,且第一接口用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个参数相关的Maven开源软件的组织名称及组件名称;
第二获取模块103,用于将第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,且第二接口用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称;
生成模块104,用于根据Maven提供的每一个接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。
请参阅图12,图12为本发明第四实施例提供的电子设备的模块方框图。
如图12所示,本发明第四实施例提供的电子设备200包括:
存储装置201及一个或多个处理器202,存储装置201用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器202执行时,使得一个或多个处理器202执行如本发明第一实施例和/或第二实施例提供的Maven开源软件库的生成方法。
需要了解的是,于本实施例中,电子设备200还包括总线203,用于存储装置201与一个或多个处理器202之间的连接。
请参阅图13,图13为本发明第五实施例提供的存储介质的模块方框图。
如图13所示,本发明第五实施例提供的存储介质300,其上存储有可执行指令301,该可执行指令301被执行时执行如本发明第一实施例和/或第二实施例提供的Maven开源软件库的生成方法。
综上所述,本发明提供的Maven开源软件库的生成方法、装置、电子设备及存储介质,其有益效果在于:
本发明第一步,构建多个被定义为任一Maven开源软件的组织名称或组件名称的部分关键词的参数并生成参数表;第二步,将参数表中的多个参数依次代入至Maven提供的,用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个参数相关的Maven开源软件的组织名称及组件名称的第一接口,以获得所有Maven开源软件的组织名称及组件名称;第三步,将第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的,用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称的第二接口,以获得所有Maven开源软件的版本名称;第四步,根据Maven提供的所有接口返回的所有Maven开源软件的信息,生成Maven开源软件库。本发明构建了多个被定义为任一Maven开源软件的组织名称或组件名称的部分关键词的参数,通过这些参数与所有Maven开源软件的组织名称或组件名称的关键词进行匹配,几乎能够找到所有Maven开源软件的相关信息,使得通过上述四个步骤生成的Maven开源软件库内的数据更加完整,在最大程度上保证了Maven开源软件库的完整性和准确性。
另外,通过本发明提供的几个实施例可知,本发明第一方面,通过Maven提供的第二接口,可以获得Maven开源软件的哈希码,完善了Maven开源软件库的数据;第二方面,对pom文件内的dependencies元素下的每一个dependency进行解析,获得每一个dependency的相关信息时,形成了递归模式,可以获得更多Maven开源软件的相关信息,进一步完善了Maven开源软件库的数据;第三方面,所构建的多个参数均为26个字母的随机组合,且任一参数的长度不大于5个字母长度,可以在基本覆盖所有Maven开源软件的g及a的关键词的前提下,缩短第一接口的工作时间,即获取所有Maven开源软件的g及a的时间,提升了生成Maven开源软件库的速度,避免了无效的劳动;第四方面,通过Maven提供的第五接口及第六接口,对Maven开源软件库进行实时更新,保证了Maven开源软件库中数据的完整性和准确性;第五方面,对于新开发出来的Maven开源组织,只需将该Maven开源组织的g代入至Maven提供的第六接口即可,进一步地保证了Maven开源软件库的完整性和准确性;第六方面,若判断异常参数表中的多个参数属于第一类异常参数,则将异常参数表中的多个参数重新依次代入至第一接口,以重新获得异常参数表中的多个参数所对应的Maven开源软件的g、a,更进一步地保证了Maven开源软件库的完整性和准确性;第七方面,若判断异常参数表中的多个参数属于第二类异常参数,则根据异常参数表中的多个参数修改相关程序,修改后的相关程序,在将参数表中的多个参数依次代入至第一接口时,可捕获并跳过异常参数表中的多个参数,避免了下一次执行程序时依然出现异常信息及重复将第二类异常参数代入至第一接口,所导致的延长生成Maven开源软件库时间的问题。
结合本发明中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk)等。
需要说明的是,本发明内容中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于产品类实施例而言,由于其与方法类实施例相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,在本发明内容中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明内容。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本发明内容中所定义的一般原理可以在不脱离本发明内容的精神或范围的情况下,在其它实施例中实现。因此,本发明内容将不会被限制于本发明内容所示的这些实施例,而是要符合与本发明内容所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种Maven开源软件库的生成方法,其特征在于,包括如下步骤:
构建多个参数并生成参数表,所述参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;
将所述参数表中的多个参数依次代入至Maven提供的第一接口,所述第一接口用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个所述参数相关的Maven开源软件的组织名称及组件名称;
将所述第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,所述第二接口用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称;
根据Maven提供的每一个所述接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。
2.如权利要求1所述的Maven开源软件库的生成方法,其特征在于,所述将所述第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口之后,还包括:
将所述第一接口及第二接口返回的所有Maven开源软件的组织名称、组件名称及版本名称依次代入至Maven提供的第三接口,所述第三接口用于对第一接口及第二接口返回的所有Maven开源软件的组织名称、组件名称及版本名称进行对应拼接,生成并返回所有Maven开源软件的哈希码。
3.如权利要求2所述的Maven开源软件库的生成方法,其特征在于,所述根据Maven提供的每一个所述接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库之后,还包括:
将经所述第三接口对应拼接后的所有Maven开源软件的组织名称、组件名称及版本名称依次代入至Maven提供的第四接口,所述第四接口用于下载所有与Maven开源软件的组织名称、组件名称及版本名称对应的Maven开源软件的pom文件。
4.如权利要求3所述的Maven开源软件库的生成方法,其特征在于,所述将经所述第三接口对应拼接后的所有Maven开源软件的组织名称、组件名称及版本名称依次代入至Maven提供的第四接口之后,还包括:
对所述pom文件内的dependencies元素下的每一个dependency进行解析,获得每一个所述dependency的相关信息,且每一个所述dependency均为Maven开源软件;
判断每一个所述dependency的相关信息是否存在于Maven开源软件库,若否,则将每一个所述dependency的相关信息存储至Maven开源软件库。
5.如权利要求1-4任一项所述的Maven开源软件库的生成方法,其特征在于:多个所述参数均为26个字母的随机组合,且任一所述参数的长度不大于5个字母长度。
6.如权利要求1所述的Maven开源软件库的生成方法,其特征在于,还包括:
获取所述Maven开源软件库中所有的组织名称并依次代入至Maven提供的第五接口,所述第五接口用于根据组织名称,查询并返回所述组织名称下的所有组件名称,并将返回的所述组件名称存储至Maven开源软件库;
获取所述Maven开源软件库中所有的组织名称及组件名称并依次代入至Maven提供的第六接口,所述第六接口用于根据所述组织名称及组件名称,查询并返回所述组织名称及组件名称下的所有版本名称,并将返回的所述版本名称存储至Maven开源软件库。
7.如权利要求1所述的Maven开源软件库的生成方法,其特征在于,还包括:
判断任一所述接口返回分别与多个参数相关的Maven开源软件的相关信息是否异常,若是,则根据多个所述参数生成异常参数表;
分别判断所述异常参数表中的多个参数是否属于第一类异常参数或第二类异常参数,若所述异常参数表中的多个参数属于第一类异常参数,则将所述异常参数表中的多个参数重新依次代入至第一接口并相应删除异常参数表中的参数,若所述异常参数表中的多个参数属于第二类异常参数,则根据所述异常参数表中的多个参数修改相关程序,修改后的所述相关程序,在将所述参数表中的多个参数依次代入至第一接口时,可捕获并跳过所述异常参数表中的多个参数。
8.一种Maven开源软件库的生成装置,其特征在于,包括:
构建模块,用于构建多个参数并生成参数表,所述参数被定义为任一Maven开源软件的组织名称或组件名称的部分关键词;
第一获取模块,用于将所述参数表中的多个参数依次代入至Maven提供的第一接口,所述第一接口用于对多个参数与Maven开源软件的组织名称或组件名称的关键词进行匹配,并返回分别与多个所述参数相关的Maven开源软件的组织名称及组件名称;
第二获取模块,用于将所述第一接口返回的分别与多个参数相关的Maven开源软件的组织名称或组件名称依次代入至Maven提供的第二接口,所述第二接口用于根据分别与多个参数相关的Maven开源软件的组织名称或组件名称查找并返回Maven开源软件的版本名称;
生成模块,用于根据Maven提供的每一个所述接口返回的所有Maven开源软件的相关信息,生成Maven开源软件库。
9.一种电子设备,其特征在于,包括:存储装置及一个或多个处理器,所述存储装置用于存储一个或多个程序,其中,当所述一个或多个程序被一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-7任一项所述的方法。
10.一种存储介质,其特征在于:该存储介质上存储有可执行指令,该可执行指令被执行时执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010404730.3A CN111309713B (zh) | 2020-05-14 | 2020-05-14 | Maven开源软件库的生成方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010404730.3A CN111309713B (zh) | 2020-05-14 | 2020-05-14 | Maven开源软件库的生成方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309713A true CN111309713A (zh) | 2020-06-19 |
CN111309713B CN111309713B (zh) | 2020-08-18 |
Family
ID=71146333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010404730.3A Active CN111309713B (zh) | 2020-05-14 | 2020-05-14 | Maven开源软件库的生成方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309713B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115473A (zh) * | 2020-09-15 | 2020-12-22 | 四川长虹电器股份有限公司 | 一种用于Java开源组件安全检测的方法 |
CN112231302A (zh) * | 2020-10-30 | 2021-01-15 | 深圳开源互联网安全技术有限公司 | Java开源组件数据库的维护方法、装置及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155724A (zh) * | 2015-04-14 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种升级方法及装置 |
US9582394B2 (en) * | 2009-07-30 | 2017-02-28 | Oracle International Corporation | Encapsulating and managing diagnostic information |
CN106528258A (zh) * | 2016-10-28 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 提高安卓项目编译速度的方法及系统 |
CN106886445A (zh) * | 2016-06-23 | 2017-06-23 | 阿里巴巴集团控股有限公司 | Java数据包生成方法及设备和信息提取方法及设备 |
CN107577469A (zh) * | 2017-08-21 | 2018-01-12 | 厦门悦讯教育科技有限公司 | 一种软件打包发布管理方法 |
CN108874464A (zh) * | 2018-05-31 | 2018-11-23 | 康键信息技术(深圳)有限公司 | 中间件自动扫描装配方法、装置及存储介质 |
US10255809B1 (en) * | 2017-05-08 | 2019-04-09 | Open Invention Network Llc | Transport parking space availability detection |
CN109634612A (zh) * | 2018-12-04 | 2019-04-16 | 浙江数链科技有限公司 | 持续集成方法、系统、计算机设备和存储介质 |
US10331422B1 (en) * | 2019-02-10 | 2019-06-25 | Julie Russell | System and method for generating API devlopment code for integrating platforms |
CN110737460A (zh) * | 2019-09-04 | 2020-01-31 | 厦门网宿有限公司 | 一种平台项目管理方法及装置 |
-
2020
- 2020-05-14 CN CN202010404730.3A patent/CN111309713B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582394B2 (en) * | 2009-07-30 | 2017-02-28 | Oracle International Corporation | Encapsulating and managing diagnostic information |
CN106155724A (zh) * | 2015-04-14 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种升级方法及装置 |
CN106886445A (zh) * | 2016-06-23 | 2017-06-23 | 阿里巴巴集团控股有限公司 | Java数据包生成方法及设备和信息提取方法及设备 |
CN106528258A (zh) * | 2016-10-28 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 提高安卓项目编译速度的方法及系统 |
US10255809B1 (en) * | 2017-05-08 | 2019-04-09 | Open Invention Network Llc | Transport parking space availability detection |
CN107577469A (zh) * | 2017-08-21 | 2018-01-12 | 厦门悦讯教育科技有限公司 | 一种软件打包发布管理方法 |
CN108874464A (zh) * | 2018-05-31 | 2018-11-23 | 康键信息技术(深圳)有限公司 | 中间件自动扫描装配方法、装置及存储介质 |
CN109634612A (zh) * | 2018-12-04 | 2019-04-16 | 浙江数链科技有限公司 | 持续集成方法、系统、计算机设备和存储介质 |
US10331422B1 (en) * | 2019-02-10 | 2019-06-25 | Julie Russell | System and method for generating API devlopment code for integrating platforms |
CN110737460A (zh) * | 2019-09-04 | 2020-01-31 | 厦门网宿有限公司 | 一种平台项目管理方法及装置 |
Non-Patent Citations (1)
Title |
---|
李俊杰: "Maven在企业Java软件产品中的应用", 《电脑知识与技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115473A (zh) * | 2020-09-15 | 2020-12-22 | 四川长虹电器股份有限公司 | 一种用于Java开源组件安全检测的方法 |
CN112231302A (zh) * | 2020-10-30 | 2021-01-15 | 深圳开源互联网安全技术有限公司 | Java开源组件数据库的维护方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111309713B (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110955416B (zh) | 接口文档生成方法、装置、设备和计算机存储介质 | |
US7577946B2 (en) | Program product, method, and system for testing consistency of machine code files and source files | |
CN111309713B (zh) | Maven开源软件库的生成方法、装置及存储介质 | |
CN110851681B (zh) | 爬虫处理方法、装置、服务器及计算机可读存储介质 | |
CN112256318B (zh) | 一种用于依赖产品的构建方法及设备 | |
CN108415998B (zh) | 应用依赖关系更新方法、终端、设备及存储介质 | |
CN111078481B (zh) | 获取配置检查清单的方法、装置、电子设备及存储介质 | |
CN107783766B (zh) | 对应用程序的文件进行清理的方法和装置 | |
US20140074849A1 (en) | Remote artifact repository | |
CN111984264B (zh) | 一种静态库的生成方法和装置 | |
CN111796855B (zh) | 一种增量版本更新方法、装置、存储介质及计算机设备 | |
CN112328259A (zh) | 一种编译时长的处理方法和装置 | |
CN113157315A (zh) | 一种软件不同版本的差异信息识别方法、装置、设备及介质 | |
CN113065018A (zh) | 一种音视频的索引库创建和检索方法、装置及电子设备 | |
CN113515303B (zh) | 一种项目转型方法、装置和设备 | |
CN116523457A (zh) | 基于业务流程的工作流处理方法、装置、设备及存储介质 | |
CN116755745A (zh) | 代码编辑器的插件更新方法、装置、设备及存储介质 | |
CN112800194B (zh) | 一种接口变更识别方法、装置、设备及存储介质 | |
CN112069236B (zh) | 关联文件的展示方法、装置、设备及存储介质 | |
CN112868008B (zh) | Java开源组件的漏洞检测方法、装置及存储介质 | |
KR101104739B1 (ko) | 소프트웨어 재사용을 지원하기 위한 시맨틱 태깅 서버와 그 방법 | |
CN112883343A (zh) | 一种程序代码的混淆方法及装置 | |
CN112115125B (zh) | 数据库访问对象名称解析方法、装置及电子设备 | |
CN115185535A (zh) | 依赖关系显示方法及装置、存储介质及电子设备 | |
US20150347402A1 (en) | System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |