1.本公开涉及计算机技术领域,具体涉及一种模块集成方法、模块集成装置、存储介质及电子设备。
背景技术:
2.在日常开发过程中,为了降低耦合、清晰结构、代码复用等原因,会对工程进行模块化。重要的组件、通用的模块会放在单独的git仓库,然后利用cocoapods工具集成、管理这些依赖库。
3.现有技术中,可以将子模块放在单独的git仓库,但是对于这些子模块,一旦需求改动到了子模块的代码,因为子模块仓库与主工程仓库不同,需要分别提交改动到各自的仓库,整个流程就会繁琐很多,开发成本很高;另外也可以使用git subtree指令以subtree形式引入改动频繁的子模块,但git subtree没有元数据文件,不方便进行版本控制。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
5.本公开的目的在于提供一种模块集成方法、模块集成装置、存储介质及电子设备,旨在解决将模块代码自动集成至主工程中的技术问题。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开实施例的一方面,提供了一种模块集成方法,包括:响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。
8.根据本公开的一些实施例,基于前述方案,所述子树配置指令对应的配置信息包括:所述子模块的来源地址、版本信息、添加规则以及存放路径中的一种或多种。
9.根据本公开的一些实施例,基于前述方案,所述根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,包括:提取所述配置信息中所述子模块的来源地址和版本信息;根据所述来源地址查询所述子模块的代码管理库;从所述子模块的代码管理库中拉取与所述版本信息对应的内容文件;其中,所述内容文件包括所述子模块的代码文件和/或资源文件。
10.根据本公开的一些实施例,基于前述方案,在所述配置信息包括添加规则时,所述将所述子模块的内容文件添加至所述主工程中,包括:根据所述添加规则从所述内容文件中提取待添加的目标内容文件;将所述目标内容文件添加至所述主工程中。
11.根据本公开的一些实施例,基于前述方案,在根据所述子树配置指令对应的配置
信息拉取所述子模块的内容文件之后,所述方法还包括:在所述配置信息中包括存放路径时,提取所述配置信息中的存放路径;或者在所述配置信息中不包括存放路径时,基于所述子模块的基础信息配置默认路径作为存放路径;将所述子模块的内容文件存放至所述存放路径中。
12.根据本公开的一些实施例,基于前述方案,在响应于子模块的安装指令之后,所述方法还包括:在检测所述主工程的代码管理库中存在以子树形式添加的所述子模块的内容文件时,将所述子模块的内容文件添加至所述主工程中。
13.根据本公开的一些实施例,基于前述方案,所述方法还包括:预先基于第三方依赖库管理工具开发模块集成插件,以利用所述模块集成插件响应于所述子模块的安装指令,以将所述子模块的内容文件添加至所述主工程中。
14.根据本公开实施例的第二方面,提供了一种模块集成装置,包括:响应模块,用于响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;配置模块,用于执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;添加模块,基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。
15.根据本公开实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中的模块集成方法。
16.根据本公开实施例的第四方面,提供了一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中的模块集成方法。
17.本公开示例性实施例可以具有以下部分或全部有益效果:
18.在本公开的一些实施例所提供的技术方案中,当接收到子模块的安装指令时获取子模块的配置文件中预置的子树配置指令,之后执行子树配置指令来拉取所述子模块的内容文件,并将子模块的内容文件以子树形式添加至主工程的代码管理库中,最后基于添加后的主工程的代码管理库修改主工程的配置文件,来将子模块的内容文件添加至主工程中。基于本公开提供的模块集成方法,结合了利用配置文件和利用配置指令管理子模块的功能有点,一方面在集成过程中利用子模块的配置文件能够同步记录子模块的改动,对开发成员透明,方便进行版本控制和管理;另一方面利用子树配置指令能够方便子模块内容改动的推送,简化模块集成的步骤,降低开发成员的使用成本。
19.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
21.图1示意性示出本公开示例性实施例中一种模块集成方法的流程示意图;
22.图2示意性示出本公开示例性实施例中一种拉取子模块内容文件方法的流程示意图;
23.图3示意性示出本公开示例性实施例中一种添加子模块内容文件方法的流程示意图;
24.图4示意性示出本公开示例性实施例中一种模块集成方法的流程示意图;
25.图5示意性示出本公开示例性实施例中一种模块集成装置的组成示意图;
26.图6示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图;
27.图7示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
具体实施方式
28.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
29.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
30.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
31.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
32.在对技术方案说明之前,首先对本公开中涉及到的关键词进行说明。
33.cocoapods:cocoapods是开发os x和ios应用程序的一个第三方库的依赖管理工具。利用cocoapods可以定义自己的依赖关系,在整个开发环境中对第三方库的版本管理非常方便,cocoapods的好处主要体现在可以方便的查找到最喜你的第三方库,并自动配置编译选项。因此绝大部分ios工程都会使用cocoapods。
34.git:git是目前最流行的分布式版本控制系统,可以有效、高速的处理各种项目的版本管理。优点在于适合分布式开发、公共服务器压力不会太大,速度快、易解决冲突等。
35.git subtree:对于工程里子仓库或者仓库共用的情况,为了方便子模块中方便同步工程里的改动,并保留历史提交记录,git官方推荐的工具是git subtree,git很早就支持了subtree功能,subtree的优点在于不增加任何像.gitmodule这样的新的元数据文件,使用起来对项目其他成员是透明的,其他成员使用起来和操作本地代码一样,不知道git subtree的存在。
36.在日常开发过程中,为了降低耦合、清晰结构、代码复用等原因,会对工程进行模块化。重要的组件、通用的模块会放在单独的git仓库,然后利用cocoapods工具集成、管理
这些依赖库。目前来说,可以通过两种方式来进行模块管理。
37.一种方法是,将子模块放在单独的git仓库,可以很方便的进行代码共享、工程集成、版本功能控制等,然后使用cocoapods工具进行子模块的集成。而对于工程里的子模块,都是利用cocoapods集成自己的私有库模块,例如典型的cocoapodspodfile文件内容如下:
38.target'project'do
39.use_frameworks!
40.pod'modulea',:git=》'ssh://git@xxxxxx/modulea.git',:tag=》'1.0.0'
41.end
42.其中,该文件是指在主工程中集成modulea模块,并给出了该模块的git仓库地址和tag版本信息。其中git地址指向该子模块的代码管理库,用于拉取子模块文件。而tag是git版本库的一个快照,指向某个commit的指针,用于表示版本信息。版本信息也可以用branch表示,branch对应一系列commit,是很多点连成的一根线,有一个head指针,是可以依靠head指针移动的。
43.但对于这些子模块,一旦需求改动到了子模块的代码,因为子模块仓库与主工程仓库不同,需要分别提交改动到各自的仓库,整个流程会繁琐很多,开发成本很高。
44.比如具体包括以下步骤:1、git拉取模块代码到本地;2、修改cocoapods podfile文件,模块代码由:git远程路径指向:path本地路径;3、执行pod update重新配置模块工程;4、修改子模块代码,并进行开发和调试;5、git提交改动到子模块仓库;6、修改podfile,做模块改回远程路径并pod update;7、git提交主工程中的代码和pod改到到主工程仓库。
45.另一种方法是,使用git subtree指令以subtree形式引入改动频繁的子模块,这样只需要定期执行git subtree指令就可以推送子模块的改动到子模块仓库。但是git subtree没有元数据文件,因此没有文件记录子模块的版本等信息,不方便做版本控制,而且除了引入者,其他成员也很难知道哪些代码是subtree引入的子模块。
46.因此,本公开提出了一种模块集成方法,结合cocoapods和git subtree两者的优点,既有cocoapods集中管理子模块、自动集成、版本控制等优势,又有git subtree对开发成员透明,方便推送改动到子模块仓库,同步改动记录等优点。对于改动频繁的子模块,可以大大降低集成、修改子模块的成本,提高了开发效率。
47.以下对本公开实施例的技术方案的实现细节进行详细阐述。
48.图1示意性示出本公开示例性实施例中一种模块集成方法的流程示意图。如图1所示,该模块集成方法包括步骤s101至步骤s103:
49.步骤s101,响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;
50.步骤s102,执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;
51.步骤s103,基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。
52.在本公开的一些实施例所提供的技术方案中,当接收到子模块的安装指令时获取子模块的配置文件中预置的子树配置指令,之后执行子树配置指令来拉取所述子模块的内
容文件,并将子模块的内容文件以子树形式添加至主工程的代码管理库中,最后基于添加后的主工程的代码管理库修改主工程的配置文件,来将子模块的内容文件添加至主工程中。基于本公开提供的模块集成方法,结合了利用配置文件和利用配置指令管理子模块的功能有点,一方面在集成过程中利用子模块的配置文件能够同步记录子模块的改动,对开发成员透明,方便进行版本控制和管理;另一方面利用子树配置指令能够方便子模块内容改动的推送,简化模块集成的步骤,降低开发成员的使用成本。
53.下面,将结合附图及实施例对本示例实施方式中的模块集成方法的各个步骤进行更详细的说明。
54.在步骤s101中,响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令。
55.具体地,进行子模块的集成也就是执行cocoapods的pod install指令,即子模块的安装指令。响应于pod install指令后,可以进行获取到该模块的配置文件,即podfile文件。
56.在本公开的一个实施例中,由于是将cocoapods和git subtree两者进行了结合,所以预先对podfile文件进行了改变,其中预置了子树配置指令,也就是subtree_pod的相关配置信息数据。
57.具体而言,所述子树配置指令对应的配置信息包括:所述子模块的来源地址、版本信息、添加规则以及存放路径中的一种或多种。
58.举例而言,cocoapods的podfile文件内容调整后的形式如下:
59.target'project'do
60.use_frameworks!
61.subtree_pod'modulea',:git=》'ssh://git@xxxxxx/moduleb.git',:brach=>'brach',:subspecs=》['sub/aa'],:location=》'bgroup'
[0062]
end
[0063]
其中,“:git=》'ssh://git@xxxxxx/moduleb.git'”即子模块的来源地址,“:brach=>'brach'”即版本信息(也可以使用tag),来源地址和版本信息可以进行子模块的版本控制。“subspecs=》['sub/aa']”即添加规则,用来表示pod库模块的规范,spec能够自动将subspecs作为依赖项。“:location=》'bgroup'”即存放路径,用于指定子模块的存放位置。
[0064]
由上可知,调整后的podfile文件与原podfile文件中pod写法基本没有太大的差别,例如都支持添加git地址、brach、tag等来指定子模块代码地址和版本,以及subspec来指定模块部分引入,对开发人员来说学习成本很低。同时,可以支持新增的location参数,用来指定模块存放位置。需要说明的是,podfile文件中subspec、location为可选参数。
[0065]
在步骤s102中,执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中。
[0066]
具体地,利用git subtree add指令执行subtree_pod指令,从远程拉取子模块的内容文件,例如子模块的所有代码、资源等文件。然后将内容文件以子树(subtree)的形式添加至主工程的代码管理库(主工程git仓库)中。
[0067]
在步骤s103中,基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。
[0068]
当主工程的git仓库中添加了subtree形式的子模块的内容文件之后,就可以将内容文件添加至主工程,之后根据添加后的主工程的代码管理库修改主工程的工程配置文件进行调整,完成子模块的集成工作。
[0069]
在本公开的一个实施例中,所述方法还包括:预先基于第三方依赖库管理工具开发模块集成插件,以利用所述模块集成插件响应于所述子模块的安装指令,以将所述子模块的内容文件添加至所述主工程中。
[0070]
具体地,当在进行子模块集成时,需要使用第三方的cocoapods工具集成、管理这些依赖库。因此可以开发cocoapods插件,该插件可以支持执行自定义的subtree_pod指令,来实现模块的集成工作。
[0071]
基于上述方法,通过在podfile文件中subtree_pod指令预置,之后便可利用开发的cocoapods插件,在执行cocoapods的集成模块指令pod install时,自动使用git subtree将模块代码集成进主工程中,便可结合cocoapods和git subtree两者的优点,既有cocoapods集中管理子模块、自动集成、版本控制等优势,又有git subtree对开发成员透明,方便推送改动到子模块仓库,同步改动记录等优点。对于改动频繁的子模块,可以大大降低集成、修改子模块的成本,提高了开发效率。
[0072]
图2示意性示出本公开示例性实施例中一种拉取子模块内容文件方法的流程示意图。参考图2所示,所述根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,包括:
[0073]
步骤s201,提取所述配置信息中所述子模块的来源地址和版本信息;
[0074]
步骤s202,根据所述来源地址查询所述子模块的代码管理库;
[0075]
步骤s203,从所述子模块的代码管理库中拉取与所述版本信息对应的内容文件;其中,所述内容文件包括所述子模块的代码文件和/或资源文件。
[0076]
具体地,cocoapods的podfile文件中可以包括子模块的来源地址和版本信息。按照来源地址可以查询到该模块所在的代码管理库,即git地址,例如“:git=》'ssh://git@xxxxxx/moduleb.git'”,版本信息即表示需要拉取的子模块的版本,可以是brach或者tag,例如“:brach=>'brach'”;之后从查询到的git地址中拉取与对应的版本以获取子模块的内容文件,这样也可以实现对子模块的版本信息进行控制。
[0077]
图3示意性示出本公开示例性实施例中一种添加子模块内容文件方法的流程示意图。参考图3所示,在所述配置信息包括添加规则时,所述将所述子模块的内容文件添加至所述主工程中,包括:
[0078]
步骤s301,根据所述添加规则从所述内容文件中提取待添加的目标内容文件;
[0079]
步骤s302,将所述目标内容文件添加至所述主工程中。
[0080]
具体地,添加规则即subspec参数,是podfile文件中可选的参数内容。
[0081]
因此,如果podfile文件中包括subspec参数时,则需要按照subspec的规则只添加对应的文件,所以需要从内容文件中提取待添加的目标内容文件。
[0082]
而如果podfile文件中不包括subspec参数时,可以将所有的内容文件添加至主工程中。
[0083]
在本公开的一个实施例中,在拉取子模块的内容文件之后,还可以将其存放至指定的路径。因此,在根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件之后,所述方法还包括:在所述配置信息中包括存放路径时,提取所述配置信息中的存放路径;或者在所述配置信息中不包括存放路径时,基于所述子模块的基础信息配置默认路径作为存放路径;将所述子模块的内容文件存放至所述存放路径中。
[0084]
具体地,存放路径即location参数,也是podfile文件中可选的参数内容。
[0085]
因此,如果podfile文件中包括location参数时,可以直接提取location对应的信息,根据:location决定子模块的存放路径。
[0086]
而如果podfile文件中不包括location参数时,则可以设置一个默认路径作为存放路径。例如,可以以子模块的文件名等基础信息设置默认路径。
[0087]
在本公开的一个实施例中,为了避免git subtree重复添加的情况,可以预先对工程目录下是否存在对应的子模块内容文件做一个校验。
[0088]
具体地,在响应于子模块的安装指令之后,所述方法还包括:在检测所述主工程的代码管理库中存在以子树形式添加的所述子模块的内容文件时,将所述子模块的内容文件添加至所述主工程中。
[0089]
也就是说,在校验时,如果工程目录下不存在需要安装的子模块,则执行subtree_pod指令,将子模块的内容文件以subtree形式添加至主工程的git库中,如果工程目录下存在,则可以跳过步骤s102,即执行subtree_pod指令的步骤,直接执行步骤s103以将子模块的内容文件添加至所述主工程中。
[0090]
图4示意性示出本公开示例性实施例中一种模块集成方法的流程示意图。参考图4所示,该模块集成方法的具体步骤如下:
[0091]
步骤s401,收集并保存subtree_pod配置信息;
[0092]
步骤s402,判断主工程中是否存在子模块内容文件,可以根据配置信息进行判断;如果存在,则说明已经无需进行添加,跳转至步骤s107;如果不存在,则执行步骤s403。
[0093]
步骤s403,判断主工程目录下是否存在子模块内容文件;具体地,也就是检查子模块内容文件是否已经以subtree形式添加到主工程的git仓库中;如果存在,那么可以跳过步骤s404和步骤s405,直接执行步骤s106;如果不存在,则执行步骤s404。
[0094]
步骤s404,确定子模块的存放位置;具体地,可以根据:location或子模块名称来确定;
[0095]
步骤s405,利用git subtree add指令拉取子模块的内容文件,并添加到主工程git中;
[0096]
步骤s406,修改主工程文件,根据subspec规则添加子模块的源代码、资源等文件到主工程中;
[0097]
步骤s407,完善工程配置,完成子模块集成。
[0098]
图5示意性示出本公开示例性实施例中一种模块集成装置的组成示意图,如图5所示,该模块集成装置500可以包括响应模块501、配置模块502以及添加模块503。其中:
[0099]
响应模块501,用于响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;
[0100]
配置模块502,用于执行所述子树配置指令,以根据所述子树配置指令对应的配置
信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;
[0101]
添加模块503,用于基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。
[0102]
根据本公开的示例性实施例,所述子树配置指令对应的配置信息包括:所述子模块的来源地址、版本信息、添加规则以及存放路径中的一种或多种。
[0103]
根据本公开的示例性实施例,所述配置模块502可以用于提取所述配置信息中所述子模块的来源地址和版本信息;根据所述来源地址查询所述子模块的代码管理库;从所述子模块的代码管理库中拉取与所述版本信息对应的内容文件;其中,所述内容文件包括所述子模块的代码文件和/或资源文件。
[0104]
根据本公开的示例性实施例,所述配置模块502还可以用于在所述配置信息包括添加规则时,根据所述添加规则从所述内容文件中提取待添加的目标内容文件;将所述目标内容文件添加至所述主工程中。
[0105]
根据本公开的示例性实施例,所述模块集成装置500还可以包括存放模块,所述存放模块用于在所述配置信息中包括存放路径时,提取所述配置信息中的存放路径;或者在所述配置信息中不包括存放路径时,基于所述子模块的基础信息配置默认路径作为存放路径;将所述子模块的内容文件存放至所述存放路径中。
[0106]
根据本公开的示例性实施例,所述模块集成装置500还可以包括校验模块,所述校验模块用于在检测所述主工程的代码管理库中存在以子树形式添加的所述子模块的内容文件时,将所述子模块的内容文件添加至所述主工程中。
[0107]
根据本公开的示例性实施例,所述模块集成装置500还可以包括开发模块,所述开发模块用于预先基于第三方依赖库管理工具开发模块集成插件,以利用所述模块集成插件响应于所述子模块的安装指令,以将所述子模块的内容文件添加至所述主工程中。
[0108]
上述的模块集成装置500中各模块的具体细节已经在对应的模块集成方法中进行了详细的描述,因此此处不再赘述。
[0109]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0110]
在本公开的示例性实施例中,还提供了一种能够实现上述方法的存储介质。图6示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图,如图6所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品600,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如手机上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0111]
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。图7示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
[0112]
需要说明的是,图7示出的电子设备的计算机系统700仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0113]
如图7所示,计算机系统700包括中央处理单元(central processing unit,cpu)701,其可以根据存储在只读存储器(read-only memory,rom)702中的程序或者从存储部分708加载到随机访问存储器(random access memory,ram)703中的程序而执行各种适当的动作和处理。在ram 703中,还存储有系统操作所需的各种程序和数据。cpu 701、rom702以及ram 703通过总线704彼此相连。输入/输出(input/output,i/o)接口705也连接至总线704。
[0114]
以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
[0115]
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本公开的系统中限定的各种功能。
[0116]
需要说明的是,本公开实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0117]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所
标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0118]
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
[0119]
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
[0120]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0121]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
[0122]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
[0123]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
技术特征:
1.一种模块集成方法,其特征在于,包括:响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。2.根据权利要求1所述的模块集成方法,其特征在于,所述子树配置指令对应的配置信息包括:所述子模块的来源地址、版本信息、添加规则以及存放路径中的一种或多种。3.根据权利要求1所述的模块集成方法,其特征在于,所述根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,包括:提取所述配置信息中所述子模块的来源地址和版本信息;根据所述来源地址查询所述子模块的代码管理库;从所述子模块的代码管理库中拉取与所述版本信息对应的内容文件;其中,所述内容文件包括所述子模块的代码文件和/或资源文件。4.根据权利要求1所述的模块集成方法,其特征在于,在所述配置信息包括添加规则时,所述将所述子模块的内容文件添加至所述主工程中,包括:根据所述添加规则从所述内容文件中提取待添加的目标内容文件;将所述目标内容文件添加至所述主工程中。5.根据权利要求1所述的模块集成方法,其特征在于,在根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件之后,所述方法还包括:在所述配置信息中包括存放路径时,提取所述配置信息中的存放路径;或者在所述配置信息中不包括存放路径时,基于所述子模块的基础信息配置默认路径作为存放路径;将所述子模块的内容文件存放至所述存放路径中。6.根据权利要求1所述的模块集成方法,其特征在于,在响应于子模块的安装指令之后,所述方法还包括:在检测所述主工程的代码管理库中存在以子树形式添加的所述子模块的内容文件时,将所述子模块的内容文件添加至所述主工程中。7.根据权利要求1所述的模块集成方法,其特征在于,所述方法还包括:预先基于第三方依赖库管理工具开发模块集成插件,以利用所述模块集成插件响应于所述子模块的安装指令,以将所述子模块的内容文件添加至所述主工程中。8.一种模块集成装置,其特征在于,包括:响应模块,用于响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;配置模块,用于执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;添加模块,用于基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。
9.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至7任一项所述的模块集成方法。10.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7任一项所述的模块集成方法。
技术总结
本公开涉及计算机技术领域,具体涉及一种模块集成方法、模块集成装置、存储介质及电子设备。该模块集成方法包括响应于子模块的安装指令,获取所述子模块的配置文件;其中,所述配置文件中包括预置的子树配置指令;执行所述子树配置指令,以根据所述子树配置指令对应的配置信息拉取所述子模块的内容文件,并将所述子模块的内容文件以子树形式添加至主工程的代码管理库中;基于添加后的主工程的代码管理库将所述子模块的内容文件添加至所述主工程中。本公开提供的模块集成方法能够解决将模块代码自动集成至主工程中的技术问题。码自动集成至主工程中的技术问题。码自动集成至主工程中的技术问题。
技术研发人员:陈磊
受保护的技术使用者:广州博冠信息科技有限公司
技术研发日:2021.12.09
技术公布日:2022/3/8