CN108376082A - 一种引用库版本更新方法和系统 - Google Patents
一种引用库版本更新方法和系统 Download PDFInfo
- Publication number
- CN108376082A CN108376082A CN201810023797.5A CN201810023797A CN108376082A CN 108376082 A CN108376082 A CN 108376082A CN 201810023797 A CN201810023797 A CN 201810023797A CN 108376082 A CN108376082 A CN 108376082A
- Authority
- CN
- China
- Prior art keywords
- reference library
- library
- version information
- version
- project
- 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
Classifications
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种引用库版本更新方法和系统。其中,方法包括:系统包括:对于任一项目,根据每一强制引用库的版本信息生成引用库的版本信息,根据引用库的版本信息生成版本配置文件;根据任一强制引用库发生变化后的版本信息修改引用任一强制引用库的每一项目的版本配置文件中的可引用版本信息。系统包括:文件生成模块,用于对于任一项目,根据每一强制引用库的版本信息生成引用库的版本信息,根据引用库的版本信息生成版本配置文件;文件更新模块,用于根据任一强制引用库发生变化后的版本信息修改引用任一强制引用库的每一项目的版本配置文件中的可引用版本信息。本发明提供的一种引用库版本更新方法和系统,耗费的时间和系统资源较少。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种引用库版本更新方法和系统。
背景技术
在Android项目中,项目(project)包含一个或多个子项目。子项目也称为模块(module),模块需要引用依赖的第三方库或自行封装库。模块所引用的依赖的第三方库或自行封装库为引用库。
目前,引用引用库的方式大多是在项目各自module中分别引用,没有统一的版本管理。因此,在修改引用库的版本时,存在以下问题:一是一个引用库的版本信息需要更新时,需要手工修改引用该引用库的每个模块的配置文件中的声明或引用该引用库的每个项目的配置文件中的声明,导致修改引用库时需要编辑文件的数量和次数较多,耗费的时间和系统资源较多;二是各个module或各项目引用的相同引用库的版本不统一,容易导致编译或运行错误;三是工程师可随意在项目中添加依赖的引用库,造成代码重复或冗余。
随着Android组件化、插件化技术日趋成熟,一个Android项目的组件、模块越来越多,因引用库没有统一的版本管理导致的上述问题就会越来越显著。
发明内容
为克服现有多个项目的相同引用库的版本信息更新存在的耗费的时间和系统资源较多的不足,本发明提供一种引用库版本更新方法和系统。
根据本发明的一个方面,提供一种引用库版本更新方法,包括:
S1、对于任一项目,当所述项目引用的引用库全部为强制引用库时,根据每一所述强制引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号相同时,所述引用库为强制引用库;
S2、当任一强制引用库的版本信息发生变化时,根据所述任一强制引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息。
优选地,所述步骤S1还包括:
对于任一项目,当所述项目引用的引用库包括强制引用库和推荐引用库时,根据每一强制引用库和每一推荐引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号不完全相同时,所述引用库为推荐引用库;
相应地,所述步骤S2还包括:
当任一项目的任一推荐引用库的版本信息发生变化时,根据所述任一推荐引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息,修改所述任一项目的版本配置文件中的所述可引用版本信息。
优选地,所述步骤S1具体包括:当所述项目引用的引用库全部为强制引用库时,
创建第一对应关系表,所述第一对应关系表包括全部项目的每一引用库的别名与包名之间的对应关系;
创建第二对应关系表,根据所述第一对应关系表和所述第二对应关系表生成所述引用库的版本信息,根据所述引用库的版本信息生成所述版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;所述第二对应关系表包括所述任一项目的每一强制引用库的别名与版本号之间的对应关系。
优选地,所述步骤S1具体还包括:当所述项目引用的引用库包括强制引用库和推荐引用库时,相应地,
对于任一项目,创建第三对应关系表,根据所述第一对应关系表、所述第二对应关系表和所述第三对应关系表生成所述引用库的版本信息,根据所述引用库的版本信息生成所述版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;所述第三对应关系表还包括所述任一项目的每一推荐引用库的别名与版本号之间的对应关系。
优选地,所述步骤S2的具体步骤包括:
当任一强制引用库的版本号发生变化时,根据所述任一强制引用库的版本号的变化,修改所述第二对应关系表,根据修改后的第二对应关系表和所述第一对应关系表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息;
当新增一个强制引用库时,将新增的所述强制引用库的别名和包名之间的对应关系添加到所述第一对应关系表中修改所述第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到所述第二对应关系表中修改所述第二对应关系表,根据修改后的第一对应关系表和所述第二对应表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息。
优选地,所述步骤S2的具体步骤还包括:
当任一项目的任一推荐引用库的版本号发生变化时,根据所述任一推荐引用库的版本号的变化,修改所述第三对应关系表,根据修改后的第三对应关系表和所述第一对应关系表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一项目的版本配置文件中的所述可引用版本信息;
当任一项目新增一个推荐引用库时,将新增的所述推荐引用库的别名和包名之间的对应关系添加到所述第一对应关系表中修改所述第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到所述第三对应关系表中修改所述第三对应关系表,根据修改后的第一对应关系表、所述第二对应关系表和修改后的第三对应表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一项目的版本配置文件中的所述可引用版本信息。
优选地,所述步骤S2之后还包括:
S3、对于每一项目,检查生成的引用库的版本信息与所述版本配置文件中的可引用版本信息是否一致,当所述生成的引用库的版本信息与所述版本配置文件中的可引用版本信息一致时,将所述版本配置文件发送到所述具有Git服务的代码托管仓库;
其中,所述具有Git服务的代码托管仓库用于记录每一所述项目的版本配置文件的每次修改。
优选地,所述步骤S3还包括:
当所述生成的引用库的版本信息与所述版本配置文件中的可引用版本信息不一致时,根据所述生成的引用库的版本信息修改所述版本配置文件中的可引用版本信息。
根据本发明的另一个方面,提供一种引用库版本更新系统,包括:
文件生成模块,用于对于任一项目,当所述项目引用的引用库全部为强制引用库时,根据每一所述强制引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号相同时,所述引用库为强制引用库;
文件更新模块,用于当任一强制引用库的版本信息发生变化时,根据所述任一强制引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息。
优选地,所述文件生成模块还用于对于任一项目,当所述项目引用的引用库包括强制引用库和推荐引用库时,根据每一强制引用库和每一推荐引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号不完全相同时,所述引用库为推荐引用库;
相应的,所述文件更新模块还用于当任一项目的任一推荐引用库的版本信息发生变化时,根据所述任一推荐引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息,修改所述任一项目的版本配置文件中的所述可引用版本信息。
本发明提供的一种引用库版本更新方法和系统,通过将变化的强制引用库的版本信息自动更新到每一引用该强制引用库的项目的版本配置文件,不用手工修改每一引用该强制引用库的项目的版本配置文件,耗费的时间和系统资源较少,减少了人为带来的错误,提高了效率。
附图说明
图1为本发明实施例一种引用库版本更新方法的流程图;
图2为本发明实施例一种引用库版本更新系统的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
需要说明的是,本发明提供的引用库版本更新方法和系统,适用于更新Android项目依赖的引用库的版本更新。引用库为静态数据库,即lib文件。
本发明提供的引用库版本更新方法和系统,适用于基于各种Android项目构建工具,实现对Android项目引用的引用库的版本更新。
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。下面以基于Gradle的Android项目为例,说明本发明提供的引用库版本更新方法和系统。对于基于其他Android项目构建工具的Android项目,本发明提供的引用库版本更新方法和系统也适用。
基于Gradle的Android项目中,项目的版本配置文件为config.gradle文件。config.gradle文件用于统一管理项目引用的引用库。
项目的各子项目的引用库构成了项目的引用库。项目的全部子模块引用的全部引用库的版本信息构成可使用版本信息,可使用版本信息被存储到config.gradle文件中。
项目的子项目通过该子项目的配置文件build.gradle文件引用config.gradle文件,获取可使用版本信息,从而引用该子项目需要引用的引用库。
因此,当项目的子项目的引用库的版本信息发生变化时,只需要修改config.gradle文件中的可使用版本信息,不需要修改该子项目的配置文件build.gradle文件,即可使该子项目引用到版本信息变化后的引用库。
当一个引用库被多个项目引用时,当该引用库的版本发生变化时,现有的做法是手工分别修改引用该引用库的每个项目的config.gradle文件或每个模块的build.gradle文件,需修改的文件的数量和次数较多,耗费的时间和系统资源较多。
图1为本发明实施例一种引用库版本更新方法的流程图。如图1所示,一种引用库版本更新方法包括:步骤S1、对于任一项目,当项目引用的引用库全部为强制引用库时,根据每一强制引用库的版本信息生成引用库的版本信息,根据引用库的版本信息生成版本配置文件,将引用库的版本信息作为可引用版本信息存储在版本配置文件中;其中,当引用引用库的每一项目引用的引用库的版本号相同时,引用库为强制引用库;步骤S2、当任一强制引用库的版本信息发生变化时,根据任一强制引用库发生变化后的版本信息生成新的引用库的版本信息,根据新的引用库的版本信息修改引用任一强制引用库的每一项目的版本配置文件中的可引用版本信息。
需要说明的是,本发明主要针对多个项目引用的同一引用库的版本相同时,该引用库的版本发生变化的情况下引用库的版本更新。
需要说明的是,本发明基于利用文档管理工具记录引用库的版本信息的情况。用户根据项目开发的实际情况利用文档管理工具修改记录引用库的版本信息的文件。
引用库的版本信息至少包括引用库的版本号、别名和包名,还可以包括引用库的其他相关信息。
将引用库中的一部分定义为强制引用库。
当引用引用库的每一项目引用的该引用库的版本号相同时,引用库为强制引用库。引用强制引用库的每一项目,引用的是相同版本的该强制引用库。
对于任一强制引用库,其版本信息包括该强制引用库的包名、别名和唯一一个允许使用的版本号。
步骤S1,对于任一项目,当项目引用的引用库全部为强制引用库时,根据记录引用库的版本信息的文件记录的该项目引用的每一强制引用库的版本信息,生成引用库的版本信息。具体地,将全部强制引用库的版本信息作为该项目的引用库的版本信息。运行脚本,根据引用库的版本信息生成该项目的版本配置文件config.gradle文件。该项目的版本配置文件config.gradle文件中存储的可引用版本信息为引用库的版本信息。
步骤S2,由于引用强制引用库的各项目引用相同版本的强制引用库,当任一强制引用库的版本信息发生变化时,需要修改每一引用该强制引用库的项目的版本配置文件config.gradle文件。
根据记录引用库的版本信息的文件记录的该强制引用库的版本信息的变化,生成新的引用库的版本信息。运行脚本,根据新的引用库的版本信息对应修改每一引用该强制引用库的项目的版本配置文件config.gradle文件。具体地,根据新的引用库的版本信息,对应修改每一引用该强制引用库的项目的config.gradle文件中存储的可引用版本信息中的该强制引用库的版本信息。
本发明实施例通过将变化的强制引用库的版本信息自动更新到每一引用该强制引用库的项目的版本配置文件,不用手工修改每一引用该强制引用库的项目的版本配置文件,耗费的时间和系统资源较少,减少了人为带来的错误,提高了效率。进一步地,将每个子项目中引用的版本号相同的引用库作为统一的强制引用库,保证一个公司的项目以及同一个项目的不同子项目引用的版本库一致,减少冲突。
基于上述实施例,作为一个可选实施例,步骤S1还包括:对于任一项目,当项目引用的引用库包括强制引用库和推荐引用库时,根据每一强制引用库和每一推荐引用库的版本信息生成引用库的版本信息,根据引用库的版本信息生成版本配置文件,将引用库的版本信息作为可引用版本信息存储在版本配置文件中;其中,当引用引用库的每一项目引用的引用库的版本号不完全相同时,引用库为推荐引用库;相应地,步骤S2还包括:当任一项目的任一推荐引用库的版本信息发生变化时,根据任一推荐引用库发生变化后的版本信息生成新的引用库的版本信息,根据新的引用库的版本信息,修改任一项目的版本配置文件中的可引用版本信息。
具体地,引用库中除强制引用库外的引用库为推荐引用库。
当引用引用库的每一项目引用的引用库的版本号不完全相同时,引用库为推荐引用库。引用推荐引用库的每一项目,引用的是版本不完全相同的该推荐引用库。
对于任一推荐引用库,其使用版本信息包括该推荐引用库的包名、别名和允许的至少两个版本号。
当项目引用的引用库同时包括强制引用库和推荐引用库时,相应地,步骤S1,根据记录引用库的版本信息的文件记录的该项目引用的每一强制引用库和每一推荐引用库的版本信息,生成引用库的版本信息。具体地,将全部强制引用库和全部推荐引用库的版本信息作为该项目的引用库的版本信息。运行脚本,根据引用库的版本信息生成该项目的版本配置文件config.gradle文件。该项目的版本配置文件config.gradle文件中存储的可引用版本信息为引用库的版本信息。
相应地,步骤S2,当任一项目的任一推荐引用库的版本信息发生变化时,由于其他引用该推荐引用库的项目引用的该推荐引用库的版本不一定也发生变化,因此仅修改该项目的版本配置文件config.gradle文件。
根据记录引用库的版本信息的文件记录的该推荐引用库的版本信息的变化,生成新的引用库的版本信息。运行脚本,根据新的引用库的版本信息对应修改该项目的版本配置文件config.gradle文件。具体地,根据新的引用库的版本信息,对应修改该项目的config.gradle文件中存储的可引用版本信息中的该推荐引用库的版本信息。
本发明实施例通过将变化的推荐引用库的版本信息自动更新到相应的项目的版本配置文件,不用手工修改该项目的版本配置文件,减少了人为带来的错误。进一步地,将版本号不同的引用库作为推荐更新库中,满足业务需求,增加灵活性。
基于上述实施例,步骤S1具体包括:当项目引用的引用库全部为强制引用库时,创建第一对应关系表,第一对应关系表包括全部项目的每一引用库的别名与包名之间的对应关系;对于任一项目,创建第二对应关系表,根据第一对应关系表和第二对应关系表生成引用库的版本信息,根据引用库的版本信息生成版本配置文件,将引用库的版本信息作为可引用版本信息存储在版本配置文件中;第二对应关系表包括任一项目的每一强制引用库的别名与版本号之间的对应关系。
需要说明的是,当项目引用的引用库全部为强制引用库时,利用文档管理工具生成的记录引用库的版本信息的文件为多个,至少包括:一个记录全部引用库的包名和别名的对应关系的文件、一个记录全部强制使用库的别名。
具体地,当项目引用的引用库全部为强制引用库时,根据记录引用库的版本信息的文件记录的该项目引用的每一引用库的版本信息,获取全部项目的每一强制引用库的别名与包名之间的对应关系,以及每一项目的每一强制引用库的别名与版本号之间的对应关系。
创建第一对应关系表,第一对应关系表包括获取的全部项目的每一引用库的别名与包名之间的对应关系。
第一对应关系表的个数为一个,被全部项目共同使用。
创建第二对应关系表,第二对应关系表包括获取的该项目的每一强制引用库的别名与版本号之间的对应关系。
第一对应关系表的个数为一个,被全部项目共同使用。
根据第一对应关系表和每一项目的第二对应关系表,可以相应获得每一项目引用的每一强制引用库的包名、别名和版本号。
对于任一项目,根据该项目引用的每一强制引用库的包名、别名和版本号,可以生成该项目的引用库的版本信息。根据该项目的引用库的版本信息可以生成该项目的版本配置文件config.gradle文件,将该项目的引用库的版本信息作为可引用版本信息存储在该项目的config.gradle文件中。
本发明实施例通过根据第一对应关系表和第二对应关系表生成可使用版本信息,实现了自动、统一的引用库管理,提高了效率。
基于上述实施例,步骤S1具体还包括:当项目引用的引用库包括强制引用库和推荐引用库时,相应地,对于任一项目,创建第三对应关系表,根据第一对应关系表、第二对应关系表和第三对应关系表生成引用库的版本信息,根据引用库的版本信息生成版本配置文件,将引用库的版本信息作为可引用版本信息存储在版本配置文件中;第三对应关系表还包括任一项目的每一推荐引用库的别名与版本号之间的对应关系。
需要说明的是,当项目引用的引用库包括强制引用库和推荐引用库时,利用文档管理工具生成的记录引用库的版本信息的文件为多个,至少包括:一个记录全部引用库的包名和别名的对应关系的文件、一个记录全部强制使用库的别名和版本号的对应关系的文件和每一项目的每一模块对应的记录该模块引用的推荐引用库的别名和版本号的对应关系的文件。
相应地,当项目引用的引用库包括强制引用库和推荐引用库时,除了根据记录引用库的版本信息的文件记录的该项目引用的每一引用库的版本信息,获取全部项目的每一引用库的别名与包名之间的对应关系,以及每一项目的每一强制引用库的别名与版本号之间的对应关系外,还根据记录引用库的版本信息的文件记录的该项目引用的每一推荐引用库的版本信息,获取全部项目的每一推荐引用库的别名与包名之间的对应关系,以及每一项目的每一推荐引用库的别名与版本号之间的对应关系。
第一对应关系表除包括获取的全部项目的每一强制引用库的别名与包名之间的对应关系外,还包括获取的全部项目的每一推荐引用库的别名与包名之间的对应关系。
对于任一项目,创建一个第三对应关系表。第三对应关系表与项目一一对应。
对于任一项目,第三对应关系表包括获取的该项目的每一推荐引用库的别名与版本号之间的对应关系。
根据第一对应关系表、第二对应关系表和每一项目的第三对应关系表,可以相应获得每一项目引用的每一强制引用库和每一推荐引用库的包名、别名和版本号。
对于任一项目,根据该项目引用的每一强制引用库和每一推荐引用库的包名、别名和版本号,可以生成该项目的引用库的版本信息。根据该项目的引用库的版本信息可以生成该项目的版本配置文件config.gradle文件,将该项目的引用库的版本信息作为可引用版本信息存储在该项目的config.gradle文件中。
本发明实施例通过根据第一对应关系表、第二对应关系表和第三对应关系表生成可使用版本信息,实现了自动、统一的引用库管理,提高了效率。
基于上述实施例,步骤S2的具体步骤包括:当任一强制引用库的版本号发生变化时,根据任一强制引用库的版本号的变化,修改第二对应关系表,根据修改后的第二对应关系表和第一对应关系表生成新的可使用版本信息,根据新的引用库的版本信息修改引用任一强制引用库的每一项目的版本配置文件中的可引用版本信息;当新增一个强制引用库时,将新增的强制引用库的别名和包名之间的对应关系添加到第一对应关系表中修改第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到第二对应关系表中修改第二对应关系表,根据修改后的第一对应关系表和第二对应表生成新的可使用版本信息,根据新的引用库的版本信息修改引用任一强制引用库的每一项目的版本配置文件中的可引用版本信息。
需要说明的是,强制引用库的版本号发生变化,包括版本号的变化和新增强制引用库。
由于引用强制引用库的各项目引用相同版本的强制引用库,当任一强制引用库的版本信息发生变化时,需要修改每一引用该强制引用库的项目的版本配置文件config.gradle文件。
具体地,当任一强制引用库的版本号发生变化时,由于仅版本号发生了变化,根据记录引用库的版本信息的文件记录的该强制引用库的版本信息的变化,修改第二对应关系表,并根据修改后的第二对应关系表和第一对应关系表生成新的可使用版本信息。
另一种情况是,当新增一个强制引用库时,新增的强制引用库的版本信息至少包括包名、别名和版本号,因此需要根据记录引用库的版本信息的文件记录的该强制引用库的版本信息,将新增的强制引用库的别名和包名之间的对应关系添加到第一对应关系表中修改第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到第二对应关系表中修改第二对应关系表,根据修改后的第一对应关系表和第二对应表生成新的可使用版本信息。
生成新的可使用版本信息后,运行脚本,根据新的可使用版本信息,根据新的引用库的版本信息对应修改每一引用该强制引用库的项目的版本配置文件config.gradle文件。具体地,根据新的引用库的版本信息,对应修改每一引用该强制引用库的项目的config.gradle文件中存储的可引用版本信息中的该强制引用库的版本信息。
本发明实施例通过将变化的强制引用库的版本信息自动更新到每一引用该强制引用库的项目的版本配置文件,不用手工修改每一引用该强制引用库的项目的版本配置文件,耗费的时间和系统资源较少,减少了人为带来的错误,提高了效率。
基于上述实施例,步骤S2的具体步骤还包括:步骤S2的具体步骤还包括:当任一项目的任一推荐引用库的版本号发生变化时,根据任一推荐引用库的版本号的变化,修改第三对应关系表,根据修改后的第三对应关系表和第一对应关系表生成新的可使用版本信息,根据新的引用库的版本信息修改引用任一项目的版本配置文件中的可引用版本信息;当任一项目新增一个推荐引用库时,将新增的推荐引用库的别名和包名之间的对应关系添加到第一对应关系表中修改第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到第三对应关系表中修改第三对应关系表,根据修改后的第一对应关系表、第二对应关系表和修改后的第三对应表生成新的可使用版本信息,根据新的引用库的版本信息修改引用任一项目的版本配置文件中的可引用版本信息。
需要说明的是,推荐引用库的版本号发生变化,包括版本号的变化和新增推荐引用库。
由于引用推荐引用库的各项目引用相同版本的推荐引用库,当任一推荐引用库的版本信息发生变化时,需要修改每一引用该推荐引用库的项目的版本配置文件config.gradle文件。
具体地,当任一项目的任一推荐引用库的版本号发生变化时,由于仅版本号发生了变化,根据记录引用库的版本信息的文件记录的该推荐引用库的版本信息的变化,修改第三对应关系表,并根据修改后的第三对应关系表和第一对应关系表生成新的可使用版本信息。
另一种情况是,当任一项目新增一个推荐引用库时,新增的推荐引用库的版本信息至少包括包名、别名和版本号,因此需要根据记录引用库的版本信息的文件记录的该推荐引用库的版本信息,将新增的推荐引用库的别名和包名之间的对应关系添加到第一对应关系表中修改第一对应关系表,将新增的推荐引用库的别名和版本号之间的对应关系添加到第三对应关系表中修改第三对应关系表,根据修改后的第一对应关系表、第二对应关系表和修改后的第三对应关系表生成新的可使用版本信息。
生成新的可使用版本信息后,运行脚本,根据新的可使用版本信息,根据新的引用库的版本信息对应修改每一引用该推荐引用库的项目的版本配置文件config.gradle文件。具体地,根据新的引用库的版本信息,对应修改每一引用该推荐引用库的项目的config.gradle文件中存储的可引用版本信息中的该推荐引用库的版本信息。
本发明实施例通过将变化的推荐引用库的版本信息自动更新到每一引用该推荐引用库的项目的版本配置文件,不用手工修改每一引用该推荐引用库的项目的版本配置文件,耗费的时间和系统资源较少,减少了人为带来的错误,提高了效率。
基于上述实施例,作为一种可选实施例,步骤S2之后还包括:步骤S3、对于每一项目,检查生成的引用库的版本信息与版本配置文件中的可引用版本信息是否一致,当生成的引用库的版本信息与版本配置文件中的可引用版本信息一致时,将版本配置文件发送到具有Git服务的代码托管仓库;其中,具有Git服务的代码托管仓库用于记录每一项目的版本配置文件的每次修改。
具体地,基于Gradle的Android项目中,为了记录config.gradle文件的每次修改,在每次config.gradle文件根据引用库的变化或新增被修改后,将config.gradle文件发送到具有Git服务的代码托管仓库。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
具有Git服务的代码托管仓库,可以实现对代码的托管。具有Git服务的代码托管仓库包括本地仓库和远程仓库。其中,远程仓库是托管在网络上的项目仓库。
常用的具有Git服务的代码托管仓库包括:GitHub、Gitlab、Bitbucket、开源中国代码托管、coding.net、CSDN代码托管平台和京东代码托管平台等。
在引用库的使用过程中,可能会出现一些误操作的问题。针对这些问题,需要有对应的检查机制来保证引用库使用的正确性。
可以在文档管理工具上,增加修改引用库的版本号和添加新的引用库的版本信息的操作权限。只有有权限的用户才能修改版本号或增加版本信息,从源头上保证版本信息的正确性。
还可以在config.gradle文件发送到具有Git服务的代码托管仓库之前,对config.gradle文件进行检查,通过检查进一步保证验证引用库版本的正确性,从结果上避免了使用错误的引用库版本。
对于每一项目,在将该项目的config.gradle文件发送到具有Git服务的代码托管仓库之前,检查生成的引用库的版本信息与版本配置文件中的可引用版本信息是否一致。
当根据记录引用库的版本信息的文件记录的该项目引用的每一引用库的版本信息生成的引用库的版本信息,与config.gradle文件中的可引用版本信息一致时,说明项目的引用库的版本信息是正确的,将config.gradle文件发送到具有Git服务的代码托管仓库中,实现具有Git服务的代码托管仓库对config.gradle文件的托管。
本发明实施例通过对项目的版本配置文件文件中的可使用版本信息的检查,保证了引用库版本的正确性,避免了使用错误的引用库版本。
基于上述实施例,作为一种可选实施例,步骤S3还包括:当生成的引用库的版本信息与版本配置文件中的可引用版本信息不一致时,根据生成的引用库的版本信息修改版本配置文件中的可引用版本信息。
具体地,对于每一项目,在将该项目的config.gradle文件发送到具有Git服务的代码托管仓库之前,检查生成的引用库的版本信息与版本配置文件中的可引用版本信息是否一致。
当根据记录引用库的版本信息的文件记录的该项目引用的每一引用库的版本信息生成的引用库的版本信息,与config.gradle文件中的可引用版本信息不一致时,说明项目的引用库的版本信息存在错误,根据生成的引用库的版本信息生成新的可引用版本信息,并根据新的可引用版本信息修改版本配置文件中的可引用版本信息。
本发明实施例通过对项目的版本配置文件文件中的可使用版本信息的检查,保证了引用库版本的正确性,避免了使用错误的引用库版本。
图2为本发明实施例一种引用库版本更新系统的结构示意图。基于上述实施例,如图2所述,一种引用库版本的更新系统包括:文件生成模块201,用于对于任一项目,当项目引用的引用库全部为强制引用库时,根据每一强制引用库的版本信息生成引用库的版本信息,根据引用库的版本信息生成版本配置文件,将引用库的版本信息作为可引用版本信息存储在版本配置文件中;其中,当引用引用库的每一项目引用的引用库的版本号相同时,引用库为强制引用库;文件更新模块202,用于当任一强制引用库的版本信息发生变化时,根据任一强制引用库发生变化后的版本信息生成新的引用库的版本信息,根据新的引用库的版本信息修改引用任一强制引用库的每一项目的版本配置文件中的可引用版本信息。
具体地,文件生成模块201与文件更新模块202电连接。
基于Gradle的Android项目中,任一强制引用库的版本信息第一次被修改后,文件更新模块202对文件生成模块201生成的config.gradle文件进行修改。
任一强制引用库的版本信息第一次被修改后的每次修改,文件更新模块202对上一次修改后的config.gradle文件进行修改。
本发明提供的引用库版本更新系统用于执行本发明提供的引用库版本更新方法,系统包括的各模块实现相应功能的具体方法和流程详见上述引用库版本更新方法的实施例,此处不再赘述。
本发明实施例通过将变化的强制引用库的版本信息自动更新到每一引用该强制引用库的项目的版本配置文件,不用手工修改每一引用该强制引用库的项目的版本配置文件,耗费的时间和系统资源较少,减少了人为带来的错误,提高了效率。进一步地,将每个子项目中引用的版本号相同的引用库作为统一的强制引用库,保证一个公司的项目以及同一个项目的不同子项目引用的版本库一致,减少冲突。
基于上述实施例,作为一种可选实施例,文件生成模块还用于对于任一项目,当项目引用的引用库包括强制引用库和推荐引用库时,根据每一强制引用库和每一推荐引用库的版本信息生成引用库的版本信息,根据引用库的版本信息生成版本配置文件,将引用库的版本信息作为可引用版本信息存储在版本配置文件中;其中,当引用引用库的每一项目引用的引用库的版本号不完全相同时,引用库为推荐引用库;相应地,文件更新模块还用于当任一项目的任一推荐引用库的版本信息发生变化时,根据任一推荐引用库发生变化后的版本信息生成新的引用库的版本信息,根据新的引用库的版本信息,修改任一项目的版本配置文件中的可引用版本信息。
具体地,基于Gradle的Android项目中,任一项目的任一推荐引用库的版本信息第一次被修改后,文件更新模块202对文件生成模块201生成的该项目的config.gradle文件进行修改。
任一项目的任一推荐引用库的版本信息第一次被修改后的每次修改,文件更新模块202对上一次修改后的该项目的config.gradle文件进行修改。
本发明提供的引用库版本更新系统用于执行本发明提供的引用库版本更新方法,系统包括的各模块实现相应功能的具体方法和流程详见上述引用库版本更新方法的实施例,此处不再赘述。
本发明实施例通过将变化的推荐引用库的版本信息自动更新到相应的项目的版本配置文件,不用手工修改该项目的版本配置文件,减少了人为带来的错误。进一步地,将版本号不同的引用库作为推荐更新库中,满足业务需求,增加灵活性。
最后,本发明的上述实施例仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种引用库版本的更新方法,其特征在于,包括:
S1、对于任一项目,当所述项目引用的引用库全部为强制引用库时,根据每一所述强制引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号相同时,所述引用库为强制引用库;
S2、当任一强制引用库的版本信息发生变化时,根据所述任一强制引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息。
2.根据权利要求1所述的引用库版本更新方法,其特征在于,所述步骤S1还包括:
对于任一项目,当所述项目引用的引用库包括强制引用库和推荐引用库时,根据每一强制引用库和每一推荐引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号不完全相同时,所述引用库为推荐引用库;
相应地,所述步骤S2还包括:
当任一项目的任一推荐引用库的版本信息发生变化时,根据所述任一推荐引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息,修改所述任一项目的版本配置文件中的所述可引用版本信息。
3.根据权利要求1或2所述的引用库版本更新方法,其特征在于,所述步骤S1具体包括:当所述项目引用的引用库全部为强制引用库时,
创建第一对应关系表,所述第一对应关系表包括全部项目的每一引用库的别名与包名之间的对应关系;
创建第二对应关系表,根据所述第一对应关系表和所述第二对应关系表生成所述引用库的版本信息,根据所述引用库的版本信息生成所述版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;所述第二对应关系表包括所述任一项目的每一强制引用库的别名与版本号之间的对应关系。
4.根据权利要求3所述的引用库版本更新方法,其特征在于,所述步骤S1具体还包括:当所述项目引用的引用库包括强制引用库和推荐引用库时,相应地,
对于任一项目,创建第三对应关系表,根据所述第一对应关系表、所述第二对应关系表和所述第三对应关系表生成所述引用库的版本信息,根据所述引用库的版本信息生成所述版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;所述第三对应关系表还包括所述任一项目的每一推荐引用库的别名与版本号之间的对应关系。
5.根据权利要求3所述的引用库版本更新方法,其特征在于,所述步骤S2的具体步骤包括:
当任一强制引用库的版本号发生变化时,根据所述任一强制引用库的版本号的变化,修改所述第二对应关系表,根据修改后的第二对应关系表和所述第一对应关系表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息;
当新增一个强制引用库时,将新增的所述强制引用库的别名和包名之间的对应关系添加到所述第一对应关系表中修改所述第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到所述第二对应关系表中修改所述第二对应关系表,根据修改后的第一对应关系表和所述第二对应表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息。
6.根据权利要求4所述的引用库版本更新方法,其特征在于,所述步骤S2的具体步骤还包括:
当任一项目的任一推荐引用库的版本号发生变化时,根据所述任一推荐引用库的版本号的变化,修改所述第三对应关系表,根据修改后的第三对应关系表和所述第一对应关系表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一项目的版本配置文件中的所述可引用版本信息;
当任一项目新增一个推荐引用库时,将新增的所述推荐引用库的别名和包名之间的对应关系添加到所述第一对应关系表中修改所述第一对应关系表,将新增的强制引用库的别名和版本号之间的对应关系添加到所述第三对应关系表中修改所述第三对应关系表,根据修改后的第一对应关系表、所述第二对应关系表和修改后的第三对应表生成所述新的可使用版本信息,根据所述新的引用库的版本信息修改引用所述任一项目的版本配置文件中的所述可引用版本信息。
7.根据权利要求1或2所述的引用库版本更新方法,其特征在于,所述步骤S2之后还包括:
S3、对于每一项目,检查生成的引用库的版本信息与所述版本配置文件中的可引用版本信息是否一致,当所述生成的引用库的版本信息与所述版本配置文件中的可引用版本信息一致时,将所述版本配置文件发送到所述具有Git服务的代码托管仓库;
其中,所述具有Git服务的代码托管仓库用于记录每一所述项目的版本配置文件的每次修改。
8.根据权利要求7所述的引用库版本更新方法,其特征在于,所述步骤S3还包括:
当所述生成的引用库的版本信息与所述版本配置文件中的可引用版本信息不一致时,根据所述生成的引用库的版本信息修改所述版本配置文件中的可引用版本信息。
9.一种引用库版本的更新系统,其特征在于,包括:
文件生成模块,用于对于任一项目,当所述项目引用的引用库全部为强制引用库时,根据每一所述强制引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号相同时,所述引用库为强制引用库;
文件更新模块,用于当任一强制引用库的版本信息发生变化时,根据所述任一强制引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息修改引用所述任一强制引用库的每一项目的版本配置文件中的所述可引用版本信息。
10.根据权利要求9所述的引用库版本更新系统,其特征在于,所述文件生成模块还用于对于任一项目,当所述项目引用的引用库包括强制引用库和推荐引用库时,根据每一强制引用库和每一推荐引用库的版本信息生成引用库的版本信息,根据所述引用库的版本信息生成版本配置文件,将所述引用库的版本信息作为可引用版本信息存储在所述版本配置文件中;
其中,当引用引用库的每一项目引用的所述引用库的版本号不完全相同时,所述引用库为推荐引用库;
相应的,所述文件更新模块还用于当任一项目的任一推荐引用库的版本信息发生变化时,根据所述任一推荐引用库发生变化后的版本信息生成新的引用库的版本信息,根据所述新的引用库的版本信息,修改所述任一项目的版本配置文件中的所述可引用版本信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810023797.5A CN108376082B (zh) | 2018-01-10 | 2018-01-10 | 一种引用库版本更新方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810023797.5A CN108376082B (zh) | 2018-01-10 | 2018-01-10 | 一种引用库版本更新方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108376082A true CN108376082A (zh) | 2018-08-07 |
CN108376082B CN108376082B (zh) | 2021-09-17 |
Family
ID=63015697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810023797.5A Active CN108376082B (zh) | 2018-01-10 | 2018-01-10 | 一种引用库版本更新方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108376082B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542875A (zh) * | 2018-11-20 | 2019-03-29 | 中国银行股份有限公司 | 一种配置文件的生成方法及装置 |
CN109992296A (zh) * | 2019-02-14 | 2019-07-09 | 平安科技(深圳)有限公司 | 同步修改一个工程中多个配置文件的方法、装置及系统 |
US11210083B1 (en) * | 2020-10-15 | 2021-12-28 | WhiteSource Ltd. | System and method for safe updating of open source libraries |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020035464A1 (en) * | 1998-04-10 | 2002-03-21 | Peter Finch | Method and apparatus for generating co-simulation and production executables from a single source |
US6804813B1 (en) * | 2000-11-03 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | System and method for remote and local diagnosis using automatically identified symbol libraries to create record based requests with tag lists of data to be collected from an operating system |
CN101853165A (zh) * | 2010-06-01 | 2010-10-06 | 杭州和利时自动化有限公司 | 一种用于组态软件中库的管理方法及系统 |
CN106371881A (zh) * | 2016-09-08 | 2017-02-01 | 武汉斗鱼网络科技有限公司 | 一种用于服务器内程序版本更新的方法和系统 |
CN106484471A (zh) * | 2016-09-30 | 2017-03-08 | 宁波方太厨具有限公司 | 一种通讯模块内固化程序的加载方法 |
-
2018
- 2018-01-10 CN CN201810023797.5A patent/CN108376082B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020035464A1 (en) * | 1998-04-10 | 2002-03-21 | Peter Finch | Method and apparatus for generating co-simulation and production executables from a single source |
US6804813B1 (en) * | 2000-11-03 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | System and method for remote and local diagnosis using automatically identified symbol libraries to create record based requests with tag lists of data to be collected from an operating system |
CN101853165A (zh) * | 2010-06-01 | 2010-10-06 | 杭州和利时自动化有限公司 | 一种用于组态软件中库的管理方法及系统 |
CN106371881A (zh) * | 2016-09-08 | 2017-02-01 | 武汉斗鱼网络科技有限公司 | 一种用于服务器内程序版本更新的方法和系统 |
CN106484471A (zh) * | 2016-09-30 | 2017-03-08 | 宁波方太厨具有限公司 | 一种通讯模块内固化程序的加载方法 |
Non-Patent Citations (3)
Title |
---|
ADRIAN_GUO: "Android Studio第三方库版本号统一管理", 《HTTPS://WWW.JIANSHU.COM/P/94D060657525》 * |
SEGUN: "Manage Android dependencies versions using gradle extra properties", 《HTTPS://SEGUNFAMISA.COM/POSTS/ANDROID-GRADLE-EXTRA-PROPERTIES》 * |
我欠你的不是一句对不起: "android使用Cradle统一依赖库的版本号", 《HTTPS://BLOG.CSDN.NET/VAECHR/ARTICLE/DETAILS/77808083?UTM_MEDIUM=DISTRIBUTE.PC_RELEVANT_T0.NONE-TASK-BLOG-OPENSEARCH-1.CONTROL&DEPTH_1-UTM_SOURCE=DISTRIBUTE.PC_RELEVANT_T0.NONE-TASK-BLOG-OPENSEARCH-1.CONTROL》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542875A (zh) * | 2018-11-20 | 2019-03-29 | 中国银行股份有限公司 | 一种配置文件的生成方法及装置 |
CN109542875B (zh) * | 2018-11-20 | 2021-09-24 | 中国银行股份有限公司 | 一种配置文件的生成方法及装置 |
CN109992296A (zh) * | 2019-02-14 | 2019-07-09 | 平安科技(深圳)有限公司 | 同步修改一个工程中多个配置文件的方法、装置及系统 |
CN109992296B (zh) * | 2019-02-14 | 2023-10-17 | 平安科技(深圳)有限公司 | 同步修改一个工程中多个配置文件的方法、装置及系统 |
US11210083B1 (en) * | 2020-10-15 | 2021-12-28 | WhiteSource Ltd. | System and method for safe updating of open source libraries |
Also Published As
Publication number | Publication date |
---|---|
CN108376082B (zh) | 2021-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143358A (zh) | 报表配置方法和系统 | |
US20070276970A1 (en) | Data Consistency Validation | |
CN104361139A (zh) | 数据导入装置和方法 | |
CN107665171A (zh) | 自动回归测试方法及装置 | |
CN108376082A (zh) | 一种引用库版本更新方法和系统 | |
US9336511B2 (en) | Import and merge of categorization schemas | |
CN111506579B (zh) | 一种智能合约代码的生成方法、程序及设备 | |
CN112433941B (zh) | 一种测试分析方法、装置、设备和存储介质 | |
CN112287013A (zh) | 数据转换方法及适配器 | |
CN105005543A (zh) | 一种接口生成装置及方法 | |
CN115993966B (zh) | 应用开发系统及方法 | |
US20210124752A1 (en) | System for Data Collection, Aggregation, Storage, Verification and Analytics with User Interface | |
CN110738038A (zh) | 合同文本的生成方法、装置、设备及计算机可读存储介质 | |
CN112800730A (zh) | 报表填报方法及装置 | |
CN112084167A (zh) | 一种权限过滤方法、装置及存储介质 | |
CN111522840A (zh) | 标签的配置方法、装置、设备及计算机可读存储介质 | |
CN116339703B (zh) | 总线接口代码生成方法、装置、电子设备及介质 | |
CN112364617A (zh) | 文件信息的处理方法、装置、电子设备和存储介质 | |
CN115269495B (zh) | 一种基于aPaaS平台的业务方案元数据处理方法及系统 | |
US8438545B1 (en) | System, method and computer program product for validating results of a test utilizing a test-independent validation entity | |
CN102663614B (zh) | 客户关系管理到服务开通的配置方法及系统 | |
US20140365989A1 (en) | Information product builder, production and delivery system | |
CN114581033B (zh) | 政务审批业务快速开发方法和装置及设备 | |
CN113568682B (zh) | 规则数据校验方法、装置、计算机设备和存储介质 | |
CN108287717B (zh) | 一种jar包生成方法及终端 |
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 | ||
CB02 | Change of applicant information |
Address after: 100085 Floor 101 102-1, No. 35 Building, No. 2 Hospital, Xierqi West Road, Haidian District, Beijing Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd. Address before: 100085 Floor 101 102-1, No. 35 Building, No. 2 Hospital, Xierqi West Road, Haidian District, Beijing Applicant before: LIANJIA(BEIJING) TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |