发明内容
本公开实施例至少提供一种项目生成方法及装置。
第一方面,本公开实施例提供了一种项目生成方法,包括:
响应于针对目标项目的生成指令,加载所述目标项目的第一生成器,并执行所述第一生成器中的第一处理逻辑;
若所述第一处理逻辑引用第二生成器的第二处理逻辑,则在基于所述第一处理逻辑生成第一软件代码的过程中,加载所述第二生成器,并执行所述第二生成器中的第二处理逻辑生成第二软件代码;
基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码。
一种可选的实施方式中,所述执行所述第二生成器中的第二处理逻辑生成第二软件代码,包括:
若所述第二处理逻辑引用第三生成器的第三处理逻辑,则在基于所述第二处理逻辑生成第四软件代码的过程中,加载所述第三生成器,并执行所述第三生成器中的第三处理逻辑生成第五软件代码;
基于所述第四软件代码及所述第五软件代码,确定所述第二软件代码。
一种可选的实施方式中,所述基于所述第一处理逻辑生成第一软件代码,包括:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码。
一种可选的实施方式中,所述执行所述第一生成器中的第一处理逻辑,包括:
获取并加载当前执行环境对应的环境信息及配置参数;
基于所述环境信息及配置参数,执行所述第一生成器中的第一处理逻辑。
一种可选的实施方式中,所述基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码,包括:
对所述第一软件代码及所述第二软件代码进行数据校验;
在所述第一软件代码及所述第二软件代码通过所述数据校验的情况下,将所述第一软件代码及所述第二软件代码融合,得到所述第三软件代码。
一种可选的实施方式中,所述加载所述目标项目的第一生成器,包括:
在所述第一处理逻辑中存在模板调用逻辑的情况下,将所述第一生成器对应的第一模板文件加载至模板管理模块,以使所述模板管理模块对所述第一模板文件进行预处理;
所述基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码,包括:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及预处理后的所述第一模板文件,生成所述第一软件代码。
第二方面,本公开实施例还提供一种项目生成装置,包括:
加载模块,用于响应于针对目标项目的生成指令,加载所述目标项目的第一生成器,并执行所述第一生成器中的第一处理逻辑;
调用模块,用于若所述第一处理逻辑引用第二生成器的第二处理逻辑,则在基于所述第一处理逻辑生成第一软件代码的过程中,加载所述第二生成器,并执行所述第二生成器中的第二处理逻辑生成第二软件代码;
确定模块,用于基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码。
一种可选的实施方式中,所述调用模块在执行所述第二生成器中的第二处理逻辑生成第二软件代码时,用于:
若所述第二处理逻辑引用第三生成器的第三处理逻辑,则在基于所述第二处理逻辑生成第四软件代码的过程中,加载所述第三生成器,并执行所述第三生成器中的第三处理逻辑生成第五软件代码;
基于所述第四软件代码及所述第五软件代码,确定所述第二软件代码。
一种可选的实施方式中,所述调用模块在基于所述第一处理逻辑生成第一软件代码时,用于:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码。
一种可选的实施方式中,所述加载模块在执行所述第一生成器中的第一处理逻辑时,用于:
获取并加载当前执行环境对应的环境信息及配置参数;
基于所述环境信息及配置参数,执行所述第一生成器中的第一处理逻辑。
一种可选的实施方式中,所述调用模块在基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码时,用于:
对所述第一软件代码及所述第二软件代码进行数据校验;
在所述第一软件代码及所述第二软件代码通过所述数据校验的情况下,将所述第一软件代码及所述第二软件代码融合,得到所述第三软件代码。
一种可选的实施方式中,所述加载模块在加载所述目标项目的第一生成器时,用于:
在所述第一处理逻辑中存在模板调用逻辑的情况下,将所述第一生成器对应的第一模板文件加载至模板管理模块,以使所述模板管理模块对所述第一模板文件进行预处理;
所述调用模块在基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码时,用于:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及预处理后的所述第一模板文件,生成所述第一软件代码。
第三方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的项目生成方法及装置,首先响应于针对目标项目的生成指令,加载所述目标项目的第一生成器,并执行所述第一生成器中的第一处理逻辑,然后,若所述第一处理逻辑引用第二生成器的第二处理逻辑,则在基于所述第一处理逻辑生成第一软件代码的过程中,加载所述第二生成器,并执行所述第二生成器中的第二处理逻辑生成第二软件代码,最后,基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码。本公开实施例通过设置多个生成器,将目标项目的生成器分解为多个,并通过处理逻辑调用多个生成器,从而在进行项目开发的过程复用生成器,提高开发效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
针对与现有技术中生成器不能复用,开发效率较低的技术问题,本公开提供了一种项目生成方法,通过设置多个生成器,将目标项目的生成器分解为多个,并通过处理逻辑调用多个生成器,从而在进行项目开发的过程复用生成器,提高开发效率。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种项目生成方法进行详细介绍,本公开实施例所提供的项目生成方法的执行主体一般为具有一定计算能力的计算机设备。在一些可能的实现方式中,该项目生成方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的项目生成方法的流程图,所述方法包括步骤S101~S103,其中:
S101、响应于针对目标项目的生成指令,加载所述目标项目的第一生成器,并执行所述第一生成器中的第一处理逻辑。
该步骤中,可以响应于针对目标项目的生成指令,获取目标项目的生成器名称,从生成器数据库中查找到生成器名称对应的第一生成器,并加载第一生成器。生成器数据库可以设置在本地和/或其他设备上。
上述第一生成器可以为目标项目整体的生成器,也可以为目标项目的一个功能模块的生成器。在加载第一生成器时,可以将其加载至内存中,以便后续执行第一生成器中的第一处理逻辑。
进一步的,若第一生成器中的处理逻辑中存在模板调用逻辑,则可以将第一生成器携带的第一模板文件加载至模板管理模块,从而使模板管理模块对第一模板文件进行预处理,使得在执行处理逻辑时能够调用预处理后的第一模板文件,确保第一模板文件能够被正确调用。
第一生成器中的处理逻辑用于生成目标项目对应的代码,其中,处理逻辑可以包括代码生成逻辑和/或模板调用逻辑,代码生成逻辑可以用于生成依赖、命令等代码,模板调用代码可以调用其对应的模板,利用模板生成对应的代码。
在执行第一处理逻辑之前,可以获取并加载当前执行环境对应的环境信息及配置参数,再基于加载的环境信息及配置参数执行第一处理逻辑,使得第一处理逻辑能够正确执行。
其中,环境信息可以包括环境变量,终端设备能够对当前执行环境进行判断,并获取其对应的环境信息,配置参数可以包括依赖、插件等文件的路径信息、用户输入的参数等。
S102、若所述第一处理逻辑引用第二生成器的第二处理逻辑,则在基于所述第一处理逻辑生成第一软件代码的过程中,加载所述第二生成器,并执行所述第二生成器中的第二处理逻辑生成第二软件代码。
该步骤中,第一处理逻辑可能会引用其他的生成器中的处理逻辑,比如,若第一生成器用于生成目标项目整体的代码,其可能引用一些功能模块的生成器,用于生成这些功能模块的代码,再将这些功能模块的代码与自身生成的代码组合至一起,得到目标项目整体的代码。
这样,将目标项目拆分成多个功能模块或更小的代码片段,并实现这些功能模块或代码片段的生成器,在对目标项目进行开发迭代的过程中,这些生成器就能够得到复用,甚至在其他项目的开发中也能够复用,极大的提高了开发效率。
进一步的,若所述第二处理逻辑引用第三生成器的第三处理逻辑,则在基于所述第二处理逻辑生成第四软件代码的过程中,可以加载所述第三生成器,并执行所述第三生成器中的第三处理逻辑生成第五软件代码;基于所述第四软件代码及所述第五软件代码,确定所述第二软件代码。
同样的,被调用的第三生成器也可以调用其他生成器。
示例性的,如图2所示,为本公开实施例提供的生成器调用关系的示意图,图中生成器A为目标项目整体的生成器,其调用了生成器B及生成器C,生成器B与生成器C可以为目标项目不同功能模块的生成器,生成器B又调用了生成器D及生成器E,用于生成功能模块中特定的代码,生成器C同样调用生成器D,且又调用了生成器F。
S103、基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码。
该步骤中,第一处理逻辑生成的第一软件代码和第二处理逻辑生成的第二软件代码可以组合到一起,生成第三软件代码,该第三软件代码即为第一生成器所对应的代码,可以为目标项目整体的代码,也可以为目标项目的一功能模块的代码。
在组合之前,可以先对第一软件代码及第二软件代码进行数据校验,确定第一软件代码及第二软件代码的完整性,以及两者之间的是否能够融合,在通过数据校验的情况下,再将第一软件代码及第二软件代码融合,得到第三软件代码。
参见图3所示,为本公开实施例提供的另一种项目生成方法,首先获取需要的微生成器(上述生成器)的名称,然后加载微生成器,若微生成器的处理逻辑中存在模板调用逻辑则将魏胜成其中的模板信息放入物料管理模块(上述模板管理模块),然后准备执行环境及上下文信息(环境信息及配置参数),再执行微生成器中的处理逻辑,若在执行过程中发现调用了子生成器(如上述第二生成器),则采用与调用微生成器相同的方式执行子生成器,直到所有微生成器与子生成器均执行完毕,得到需要的项目代码。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与项目生成方法对应的项目生成装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述项目生成方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种项目生成装置的示意图,所述装置包括:
加载模块410,用于响应于针对目标项目的生成指令,加载所述目标项目的第一生成器,并执行所述第一生成器中的第一处理逻辑;
调用模块420,用于若所述第一处理逻辑引用第二生成器的第二处理逻辑,则在基于所述第一处理逻辑生成第一软件代码的过程中,加载所述第二生成器,并执行所述第二生成器中的第二处理逻辑生成第二软件代码;
确定模块430,用于基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码。
一种可选的实施方式中,所述调用模块420在执行所述第二生成器中的第二处理逻辑生成第二软件代码时,用于:
若所述第二处理逻辑引用第三生成器的第三处理逻辑,则在基于所述第二处理逻辑生成第四软件代码的过程中,加载所述第三生成器,并执行所述第三生成器中的第三处理逻辑生成第五软件代码;
基于所述第四软件代码及所述第五软件代码,确定所述第二软件代码。
一种可选的实施方式中,所述调用模块420在基于所述第一处理逻辑生成第一软件代码时,用于:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码。
一种可选的实施方式中,所述加载模块410在执行所述第一生成器中的第一处理逻辑时,用于:
获取并加载当前执行环境对应的环境信息及配置参数;
基于所述环境信息及配置参数,执行所述第一生成器中的第一处理逻辑。
一种可选的实施方式中,所述调用模块420在基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码时,用于:
对所述第一软件代码及所述第二软件代码进行数据校验;
在所述第一软件代码及所述第二软件代码通过所述数据校验的情况下,将所述第一软件代码及所述第二软件代码融合,得到所述第三软件代码。
一种可选的实施方式中,所述加载模块410在加载所述目标项目的第一生成器时,用于:
在所述第一处理逻辑中存在模板调用逻辑的情况下,将所述第一生成器对应的第一模板文件加载至模板管理模块,以使所述模板管理模块对所述第一模板文件进行预处理;
所述调用模块420在基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码时,用于:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及预处理后的所述第一模板文件,生成所述第一软件代码。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的项目生成方法,本公开实施例还提供了一种电子设备500,如图5所示,为本公开实施例提供的电子设备500结构示意图,包括:
处理器51、存储器52、和总线53;存储器52用于存储执行指令,包括内存521和外部存储器522;这里的内存521也称内存储器,用于暂时存放处理器51中的运算数据,以及与硬盘等外部存储器522交换的数据,处理器51通过内存521与外部存储器522进行数据交换,当所述电子设备500运行时,所述处理器51与所述存储器52之间通过总线53通信,使得所述处理器51执行以下指令:
响应于针对目标项目的生成指令,加载所述目标项目的第一生成器,并执行所述第一生成器中的第一处理逻辑;
若所述第一处理逻辑引用第二生成器的第二处理逻辑,则在基于所述第一处理逻辑生成第一软件代码的过程中,加载所述第二生成器,并执行所述第二生成器中的第二处理逻辑生成第二软件代码;
基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码。
一种可选的实施方式中,所述处理器51执行的步骤中,所述执行所述第二生成器中的第二处理逻辑生成第二软件代码,包括:
若所述第二处理逻辑引用第三生成器的第三处理逻辑,则在基于所述第二处理逻辑生成第四软件代码的过程中,加载所述第三生成器,并执行所述第三生成器中的第三处理逻辑生成第五软件代码;
基于所述第四软件代码及所述第五软件代码,确定所述第二软件代码。
一种可选的实施方式中,所述处理器51执行的步骤中,所述基于所述第一处理逻辑生成第一软件代码,包括:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码。
一种可选的实施方式中,所述处理器51执行的步骤中,所述执行所述第一生成器中的第一处理逻辑,包括:
获取并加载当前执行环境对应的环境信息及配置参数;
基于所述环境信息及配置参数,执行所述第一生成器中的第一处理逻辑。
一种可选的实施方式中,所述处理器51执行的步骤中,所述基于所述第一软件代码和所述第二软件代码,确定所述目标项目对应的第三软件代码,包括:
对所述第一软件代码及所述第二软件代码进行数据校验;
在所述第一软件代码及所述第二软件代码通过所述数据校验的情况下,将所述第一软件代码及所述第二软件代码融合,得到所述第三软件代码。
一种可选的实施方式中,所述处理器51执行的步骤中,所述加载所述目标项目的第一生成器,包括:
在所述第一处理逻辑中存在模板调用逻辑的情况下,将所述第一生成器对应的第一模板文件加载至模板管理模块,以使所述模板管理模块对所述第一模板文件进行预处理;
所述基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及所述第一生成器对应的第一模板文件,生成所述第一软件代码,包括:
基于所述第一处理逻辑中的代码生成逻辑,和/或,所述第一处理逻辑中的模板调用逻辑及预处理后的所述第一模板文件,生成所述第一软件代码。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的项目生成方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的项目生成方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。