CN116382703A - 软件包生成方法、代码开发方法及装置、电子设备和介质 - Google Patents
软件包生成方法、代码开发方法及装置、电子设备和介质 Download PDFInfo
- Publication number
- CN116382703A CN116382703A CN202310664485.3A CN202310664485A CN116382703A CN 116382703 A CN116382703 A CN 116382703A CN 202310664485 A CN202310664485 A CN 202310664485A CN 116382703 A CN116382703 A CN 116382703A
- Authority
- CN
- China
- Prior art keywords
- software package
- target
- template
- code
- original file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000011161 development Methods 0.000 title claims abstract description 69
- 238000004458 analytical method Methods 0.000 claims abstract description 64
- 238000012545 processing Methods 0.000 claims abstract description 49
- 230000010354 integration Effects 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 51
- 230000015654 memory Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 8
- 238000009877 rendering Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 23
- 238000004590 computer program Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 5
- 238000004806 packaging method and process Methods 0.000 description 4
- 108010001267 Protein Subunits Proteins 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000001907 polarising light microscopy Methods 0.000 description 1
- 229920006324 polyoxymethylene Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种软件包生成方法、代码开发方法及装置、电子设备和介质,可以应用于计算机技术、互联网技术、软件开发技术和金融科技领域。该软件包生成方法包括:根据用于生成软件包的原始文件,确定与原始文件对应的解析模板、功能模板和数据字典;根据解析模板和数据字典,对原始文件进行处理,得到文件解析结果;利用模板引擎,根据功能模板,对文件解析结果进行处理,得到与原始文件对应的目标代码;利用持续集成工具,对目标代码执行编译,得到编译结果;在编译结果表征目标代码编译通过的情况下,根据目标代码,生成与原始文件对应的软件包。
Description
技术领域
本发明涉及计算机技术、互联网技术、软件开发技术和金融科技领域,更具体地,涉及一种软件包生成方法、代码开发方法及装置、电子设备和介质。
背景技术
随着计算机技术的发展,软件开发的需求与日俱增。软件可以包括系统软件和应用软件。
软件开发可以指使用程序语言编写用于商业、生活等方面的软件系统或者软件系统中的软件部分的过程。软件开发过程可以包括需求捕捉、需求分析、软件设计、软件编码、软件测试和软件维护。
在实现本发明构思的过程中,发明人发现相关技术中至少存在如下问题:在存在软件需求或软件设计发生变更的情况下,无法保障代码生成的效率和准确性。
发明内容
有鉴于此,本发明提供了一种软件包生成方法、代码开发方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本发明的一个方面,提供了一种软件包生成方法,包括:根据用于生成软件包的原始文件,确定与上述原始文件对应的解析模板、功能模板和数据字典;根据上述解析模板和上述数据字典,对上述原始文件进行处理,得到文件解析结果;利用模板引擎,根据上述功能模板,对上述文件解析结果进行处理,得到与上述原始文件对应的目标代码;利用持续集成工具,对上述目标代码执行编译,得到编译结果;以及在上述编译结果表征目标代码编译通过的情况下,根据上述目标代码,生成与上述原始文件对应的软件包。
根据本发明的实施例,上述数据字典包括至少一个预设数据表标识、与上述至少一个预设数据表标识各自对应的预设数据表,上述预设数据表包括至少一个预设字段名称、与上述至少一个预设字段名称各自对应的预设字段值。
根据本发明的实施例,上述根据上述解析模板和上述数据字典,对上述原始文件进行处理,得到文件解析结果包括:利用上述解析模板,对上述原始文件进行解析,得到与上述原始文件对应的至少一个数据表标识和至少一个字段名称;针对上述至少一个数据表标识中的每个数据表标识,将上述数据表标识和上述至少一个预设数据表标识分别进行匹配,得到目标数据表标识;针对上述至少一个字段名称中的每个字段名称,将上述字段名称和与上述目标数据表标识对应的上述至少一个预设字段名称分别进行匹配,得到目标字段名称;将与上述目标字段名称对应的预设字段值确定为目标字段值;以及根据与上述至少一个字段名称各自对应的目标字段值,对上述原始文件进行处理,得到上述文件解析结果。
根据本发明的实施例,上述利用模板引擎,根据上述功能模板,对上述文件解析结果进行处理,得到与上述原始文件对应的目标代码包括:将上述文件解析结果输入至上述功能模板;以及利用上述模板引擎,渲染上述功能模板,得到上述目标代码。
根据本发明的实施例,上述原始文件还包括文件格式信息、业务需求信息和目标代码框架信息。
根据本发明的实施例,上述根据用于生成软件包的原始文件,确定与上述原始文件对应的解析模板、功能模板和数据字典包括:根据上述文件格式信息,确定与上述文件格式信息对应的上述解析模板;根据上述业务需求信息,确定与上述业务需求信息对应的数据字典;以及根据上述目标代码框架信息,确定与上述目标代码框架信息对应的功能模板。
根据本发明的实施例,上述软件包生成方法还包括,在上述在上述编译结果表征目标代码编译通过的情况下,根据上述目标代码,生成与上述原始文件对应的软件包之后:根据上述原始文件,确定与上述软件包对应的软件包标识和版本信息;以及利用上述持续集成工具,将上述软件包标识、上述版本信息和上述软件包关联存储至远程仓库。
根据本发明的另一个方面,提供了一种代码开发方法,包括:响应于接收到代码开发指令,根据上述代码开发指令中的业务需求信息,确定目标软件包信息;根据上述目标软件包信息,从远程仓库获取与上述目标软件包信息对应的至少一个目标软件包;以及根据上述至少一个目标软件包,开发目标代码。
根据本发明的实施例,上述目标软件包是利用上述软件包生成方法得到的。
根据本发明的实施例,上述目标软件包信息包括至少一个目标软件包标识和与上述至少一个目标软件包标识各自对应的目标版本信息。
根据本发明的实施例,上述根据上述目标软件包信息,从远程仓库获取与上述目标软件包信息对应的至少一个目标软件包包括:针对上述至少一个目标软件包标识中的每个目标软件包标识,将上述目标软件包标识和上述远程仓库中的至少一个软件包标识分别进行匹配,得到至少一个候选软件包标识;将上述目标版本信息和与上述至少一个候选软件包标识各自对应的版本信息分别进行匹配,得到上述目标软件包;以及从上述远程仓库获取上述目标软件包。
根据本发明的另一个方面,提供了一种软件包生成装置,包括:第一确定模块,用于根据用于生成软件包的原始文件,确定与上述原始文件对应的解析模板、功能模板和数据字典;第一处理模块,用于根据上述解析模板和上述数据字典,对上述原始文件进行处理,得到文件解析结果;第二处理模块,用于利用模板引擎,根据上述功能模板,对上述文件解析结果进行处理,得到与上述原始文件对应的目标代码;编译模块,用于利用持续集成工具,对上述目标代码执行编译,得到编译结果;以及生成模块,用于在上述编译结果表征目标代码编译通过的情况下,根据上述目标代码,生成与上述原始文件对应的软件包。
根据本发明的另一个方面,提供了一种代码开发装置,包括:第二确定模块,用于响应于接收到代码开发指令,根据上述代码开发指令中的业务需求信息,确定目标软件包信息;获取模块,用于根据上述目标软件包信息,从远程仓库获取与上述目标软件包信息对应的至少一个目标软件包;以及开发模块,用于根据上述至少一个目标软件包,开发目标代码。
根据本发明的实施例,上述目标软件包是利用软件包生成装置得到的。
根据本发明的另一个方面,提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个指令,其中,当上述一个或多个指令被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如本发明所述的方法。
根据本发明的另一个方面,提供了一种计算机可读存储介质,其上存储有可执行指令,上述可执行指令被处理器执行时使处理器实现如本发明所述的方法。
根据本发明的另一个方面,提供了一种计算机程序产品,上述计算机程序产品包括计算机可执行指令,上述计算机可执行指令在被执行时用于实现如本发明所述的方法。
根据本发明的实施例,由于目标代码是利用模板引擎,根据功能模板对文件解析结果进行处理得到的,文件解析结果是根据解析模板和数据字典对原始文件进行处理得到的,解析模板、功能模板和数据字典是根据用于生成软件包的原始文件确定的,因而能够实现目标代码的自动生成。在此基础上,通过利用持续集成工具,对目标代码执行编译,并在编译结果表征目标代码编译通过的情况下,根据目标代码生成与原始文件对应的软件包,因而至少部分地克服了相关技术中在存在软件需求或软件设计发生变更的情况下,无法保障代码生成的效率和准确性的技术问题,由于能够自动实现原始文件到软件包的自动转换,因而提高了软件包生成的效率。此外,由于能够保证软件包与原始文件相一致,因而提高了软件包生成的准确性。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚。
图1示意性示出了根据本发明实施例的可以应用软件包生成方法、代码开发方法的系统架构。
图2示意性示出了根据本发明实施例的软件包生成方法的流程图。
图3示意性示出了根据本发明实施例的根据用于生成软件包的原始文件,确定与原始文件对应的解析模板、功能模板和数据字典过程的示例示意图。
图4示意性示出了根据本发明实施例的根据解析模板和数据字典,对原始文件进行处理,得到文件解析结果过程的示例示意图。
图5示意性示出了根据本发明实施例的代码开发方法的流程图。
图6示意性示出了根据本发明实施例的根据目标软件包信息,从远程仓库获取与目标软件包信息对应的至少一个目标软件包过程的示例示意图。
图7示意性示出了根据本发明实施例的代码开发过程的示例示意图。
图8示意性示出了根据本发明实施例的软件包生成装置的框图。
图9示意性示出了根据本发明实施例的代码开发装置的框图。
图10示意性示出了根据本发明实施例的适于实现软件包生成方法、代码开发方法的电子设备的框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本发明的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本发明的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
在应用软件开发的过程中,通常会涉及相关的设计文档。设计文档可以用于明确接口报文格式和数据库字段说明。开发人员可以将设计文档翻译为代码。
但是,在应用软件的需求或者设计发生变更的情况下,由于需要同时维护设计文档和代码,因而增加了开发工作量。此外,由于人工编写代码容易导致设计文档与代码不一致,因而会存在代码缺陷,进而增加了开发成本。
为了至少部分地解决相关技术中存在的技术问题,本发明提供了一种软件包生成方法、代码开发方法及装置、电子设备和介质,可以应用于计算机技术、互联网技术、软件开发技术和金融科技领域。该软件包生成方法包括:根据用于生成软件包的原始文件,确定与原始文件对应的解析模板、功能模板和数据字典;根据解析模板和数据字典,对原始文件进行处理,得到文件解析结果;利用模板引擎,根据功能模板,对文件解析结果进行处理,得到与原始文件对应的目标代码;利用持续集成工具,对目标代码执行编译,得到编译结果;在编译结果表征目标代码编译通过的情况下,根据目标代码,生成与原始文件对应的软件包。
需要说明的是,本发明实施例提供的软件包生成方法、代码开发方法和装置可用于计算机技术、互联网技术、软件开发技术和金融科技领域,例如应用于软件测试技术领域。本发明实施例提供的软件包生成方法、代码开发方法和装置也可用于除计算机技术、互联网技术、软件开发技术和金融科技领域之外的任意领域,例如应用于信息安全领域。本发明实施例提供的软件包生成方法、代码开发方法和装置的应用领域不做限定。
图1示意性示出了根据本发明实施例的可以应用软件包生成方法、代码开发方法的系统架构。需要注意的是,图1所示仅为可以应用本发明实施例的系统架构的示例,以帮助本领域技术人员理解本发明的技术内容,但并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括第一终端设备101、第二终端设备102、第三终端设备103,网络104和服务器105。网络104用以在第一终端设备101、第二终端设备102、第三终端设备103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用第一终端设备101、第二终端设备102、第三终端设备103中的至少一个通过网络104与服务器105交互,以接收或发送消息等。第一终端设备101、第二终端设备102、第三终端设备103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
第一终端设备101、第二终端设备102、第三终端设备103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用第一终端设备101、第二终端设备102、第三终端设备103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本发明实施例所提供的软件包生成方法、代码开发方法一般可以由服务器105执行。相应地,本发明实施例所提供的软件包生成装置、代码开发装置一般可以设置于服务器105中。本发明实施例所提供的软件包生成方法、代码开发方法也可以由不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群执行。相应地,本发明实施例所提供的软件包生成装置、代码开发装置也可以设置于不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群中。
备选地,本发明实施例所提供的软件包生成方法、代码开发方法也可以由第一终端设备101、第二终端设备102或第三终端设备103执行,或者也可以由不同于第一终端设备101、第二终端设备102或第三终端设备103的其他终端设备执行。相应地,本发明实施例所提供的软件包生成装置、代码开发装置也可以设置于第一终端设备101、第二终端设备102或第三终端设备103中,或设置于不同于第一终端设备101、第二终端设备102或第三终端设备103的其他终端设备中。
应该理解,图1中的第一终端设备、第二终端设备、第三终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的第一终端设备、第二终端设备、第三终端设备、网络和服务器。
应注意,以下方法中各个操作的序号仅作为该操作的表示以便描述,而不应被看作表示该各个操作的执行顺序。除非明确指出,否则该方法不需要完全按照所示顺序来执行。
图2示意性示出了根据本发明实施例的软件包生成方法的流程图。
如图2所示,该软件包生成方法200包括操作S210~S250。
在操作S210,根据用于生成软件包的原始文件,确定与原始文件对应的解析模板、功能模板和数据字典。
在操作S220,根据解析模板和数据字典,对原始文件进行处理,得到文件解析结果。
在操作S230,利用模板引擎,根据功能模板,对文件解析结果进行处理,得到与原始文件对应的目标代码。
在操作S240,利用持续集成工具,对目标代码执行编译,得到编译结果。
在操作S250,在编译结果表征目标代码编译通过的情况下,根据目标代码,生成与原始文件对应的软件包。
根据本发明的实施例,软件包可以指开发类库。开发类库可以指提前预编译的代码集合。软件包可以指具有特定的功能,用于完成特定任务的一个程序或者一组程序。软件包的文件格式可以根据实际业务需求进行设置,在此不作限定。例如,软件包文件格式可以包括以下至少之一:ZIP、JAR(即Java Archive)和RAR(即Roshal ARchive)。软件包可以通过聚合Java类文件、相关元数据和资源文件,用于Java工程编译运行使用。资源文件例如可以包括文本和图片。软件包可以用于开发Java平台应用软件或库。
根据本发明的实施例,在接收到用于生成软件包的原始文件之后,可以根据原始文件,确定与原始文件对应的解析模板、功能模板和数据字典。原始文件可以包括文件格式信息、业务需求信息和目标代码框架信息。文件格式信息可以用于描述原始文件的解析格式类型。例如,可以根据文件格式信息,确定与文件格式信息对应的所述解析模板。业务需求信息可以用于描述与待生成软件包相关的应用业务领域。例如,可以根据业务需求信息,确定与业务需求信息对应的数据字典。目标代码框架信息可以用于描述与待生成软件包对应的代码的基础框架。例如,可以根据目标代码框架信息,确定与目标代码框架信息对应的功能模板。
根据本发明的实施例,解析模板、功能模板和数据字典的获取方式可以根据实际业务需求进行设置,在此不作限定。例如,解析模板、功能模板和数据字典可以是通过实时采集获取的。备选地,解析模板、功能模板和数据字典也可以是从数据源中获取的。数据源可以包括以下至少之一:本地数据库、云数据库和网络资源。例如,可以调用数据接口,利用数据接口从数据源中获取解析模板、功能模板和数据字典。备选地,解析模板、功能模板和数据字典可以是接收自其它终端设备发送的。
根据本发明的实施例,解析模板可以属于可扩展标记语言(Extensible MarkupLanguage,XML)格式。在获得解析模板之后,可以利用解析模板,对原始文件进行解析,得到至少一个数据表标识和至少一个字段名称。
根据本发明的实施例,数据字典可以包括与原始文件对应的应用业务领域至少一个数据字段、至少一个数据字段各自的业务定义和存储定义。例如,数据字典可以包括至少一个预设数据表。至少一个预设数据表中的每个预设数据表可以包括至少一个预设字段名称和与至少一个预设字段名称各自对应的预设字段值。在获得数据字典之后,可以利用数据字典中的至少一个预设数据表和至少一个预设字段名称,对原始文件的至少一个数据表标识和至少一个字段名称方便进行匹配,得到文件解析结果。
根据本发明的实施例,模板引擎可以是基于Velocity模板语言(VelocityTemplate Language,VTL)生成的。模板引擎可以通过特定的语法获取Java对象的数据,填充到目标模板之中,以生成与目标模板对应的代码文件。可以通过调用模板引擎的API,输入解析模板、数据字典和功能模板,生成与原始文件对应的目标代码。
根据本发明的实施例,在获得目标代码之后,可以对目标代码进行本地管理。管理目标代码的方式可以根据实际业务需求进行设置,在此不作限定。例如,可以将目标代码存储至本地仓库。备选地,可以通过版本控制工具对目标代码进行管理。版本控制工具可以包括以下至少之一:集中式版本控制系统(例如Svn)和分布式版本控制系统(例如Git)。
根据本发明的实施例,分布式版本控制系统在实现本地目标代码管理的同时,也可以将目标代码同步至远程代码仓库。通过分布式版本控制系统的分支管理与变更记录可以追踪目标代码存储的全过程,也可以通过分布式版本控制系统进行分支的创建和合并以实现对于目标代码开发版本的保护。
根据本发明的实施例,在对目标代码进行本地管理之后,可以利用持续集成工具,对所述目标代码执行编译,得到编译结果。持续集成(Continuous Integration,CI)可以包括自动测试、版本控制、构建自动化和自动部署。持续集成工具可以根据实际业务需求进行设置,在此不作限定。例如,持续集成工具可以包括以下至少之一:Jenkins、GitLab、Buddy和TeamCity等。持续集成工具可以用于监控持续重复的工作,使软件项目可以进行持续集成。
根据本发明的实施例,在编译结果表征目标代码编译未通过的情况下,可以输出预警信息。在编译结果表征目标代码编译通过的情况下,可以根据目标代码,生成与原始文件对应的软件包。在获得软件包之后,可以将软件包推送至远程Maven仓库。远程Maven仓库可以用于存放和管理项目对象模型(Project Object Model,POM)。
根据本发明的实施例,由于目标代码是利用模板引擎,根据功能模板对文件解析结果进行处理得到的,文件解析结果是根据解析模板和数据字典对原始文件进行处理得到的,解析模板、功能模板和数据字典是根据用于生成软件包的原始文件确定的,因而能够实现目标代码的自动生成。在此基础上,通过利用持续集成工具,对目标代码执行编译,并在编译结果表征目标代码编译通过的情况下,根据目标代码生成与原始文件对应的软件包,因而至少部分地克服了相关技术中在存在软件需求或软件设计发生变更的情况下,无法保障代码生成的效率和准确性的技术问题,由于能够自动实现原始文件到软件包的自动转换,因而提高了软件包生成的效率。此外,由于能够保证软件包与原始文件相一致,因而提高了软件包生成的准确性。
下面参考图3和图4,对根据本发明实施例的软件包生成方法200做进一步说明。
根据本发明的实施例,操作S210可以包括如下操作。
根据文件格式信息,确定与文件格式信息对应的解析模板。根据业务需求信息,确定与业务需求信息对应的数据字典。根据目标代码框架信息,确定与目标代码框架信息对应的功能模板。
根据本发明的实施例,原始文件还可以包括文件格式信息、业务需求信息和目标代码框架信息。
根据本发明的实施例,文件格式信息可以用于描述原始文件的解析格式类型。可以根据文件格式信息,确定与文件格式信息对应的所述解析模板。业务需求信息可以用于描述与待生成软件包相关的应用业务领域。可以根据业务需求信息,确定与业务需求信息对应的数据字典。目标代码框架信息可以用于描述与待生成软件包对应的代码的基础框架。可以根据目标代码框架信息,确定与目标代码框架信息对应的功能模板。
根据本发明的实施例,解析模板可以与原始文件一一对应。解析模板可以用于描述原始文件的格式解析类型和内容解析方式。格式解析类型可以指原始文件的文件格式。内容解析方式可以指原始文件中每一列的字段含义。
根据本发明的实施例,由于解析模板是根据文件格式信息确定的,数据字典是根据业务需求信息确定的,功能模板是根据目标代码框架信息确定的,因而能够自动根据原始文件确定与原始文件对应的解析模板、数据字典和功能模板,由此提高了信息处理的效率,进而提高了软件包生成的效率。
图3示意性示出了根据本发明实施例的根据用于生成软件包的原始文件,确定与原始文件对应的解析模板、功能模板和数据字典过程的示例示意图。
如图3所示,在300中,原始文件301可以包括文件格式信息301_1、业务需求信息301_2和目标代码框架信息301_3。可以根据文件格式信息301_1,确定与文件格式信息301_1对应的解析模板302。根据业务需求信息301_2,确定与业务需求信息301_2对应的数据字典303。根据目标代码框架信息301_3,确定与目标代码框架信息301_3对应的功能模板304。
根据本发明的实施例,操作S220可以包括如下操作。
利用解析模板,对原始文件进行解析,得到与原始文件对应的至少一个数据表标识和至少一个字段名称。针对至少一个数据表标识中的每个数据表标识,将数据表标识和至少一个预设数据表标识分别进行匹配,得到目标数据表标识。针对至少一个字段名称中的每个字段名称,将字段名称和与目标数据表标识对应的至少一个预设字段名称分别进行匹配,得到目标字段名称。将与目标字段名称对应的预设字段值确定为目标字段值。根据与至少一个字段名称各自对应的目标字段值,对原始文件进行处理,得到文件解析结果。
根据本发明的实施例,数据字典可以包括至少一个预设数据表标识、与至少一个预设数据表标识各自对应的预设数据表,预设数据表包括至少一个预设字段名称、与至少一个预设字段名称各自对应的预设字段值。
根据本发明的实施例,可以将数据字典作为全局配置参数,输入至模板引擎中。以数据字典包括预设数据表标识“001”为例,与预设数据表标识“001”对应的预设数据表可以如下表1所示。
在表1中,可以包括预设字段标识“10001”,与预设字段标识“10001”对应的预设字段名称(英文)“demo1”、预设字段名称(中文)“字段1”,与预设字段名称(英文)“demo1”和/或预设字段名称(中文)“字段1”对应的预设字段值“0:状态A”、数据类型“char(1)”。
在表1中,还可以包括预设字段标识“10002”,与预设字段标识“10002”对应的预设字段名称(英文)“demo2”、预设字段名称(中文)“字段2,与预设字段名称(英文)“demo2”和/或预设字段名称(中文)“字段2”对应的预设字段值“1:状态B”、数据类型“varchar(1)”。
表1
根据本发明的实施例,由于文件解析结果是根据利用解析模板,对原始文件进行解析得到的至少一个数据表标识和至少一个字段名称,对数据字典包括的至少一个预设数据表标识和至少一个预设字段名称进行匹配得到的,通过结合解析模板和数据字典对原始文件进行处理,避免了人为干预,能够实现对原始文件的自动化解析,由此提高了原始文件处理的效率,进而提高了软件包生成的效率。
图4示意性示出了根据本发明实施例的根据解析模板和数据字典,对原始文件进行处理,得到文件解析结果过程的示例示意图。
如图4所示,在400中,数据字典可以包括至少一个预设数据表标识406、与至少一个预设数据表标识406各自对应的预设数据表,预设数据表可以包括至少一个预设字段名称407、与至少一个预设字段名称407各自对应的预设字段值。
可以利用解析模板401,对原始文件402进行解析,得到与原始文件402对应的至少一个数据表标识403和至少一个字段名称404。
针对至少一个数据表标识403中的每个数据表标识403,可以将数据表标识403和至少一个预设数据表标识406分别进行匹配,得到目标数据表标识408。
在获得目标数据表标识408之后,针对至少一个字段名称404中的每个字段名称404,可以将字段名称404和与目标数据表标识408对应的至少一个预设字段名称407分别进行匹配,得到目标字段名称409。
在获得目标字段名称409之后可以将与目标字段名称409对应的预设字段值确定为目标字段值410。根据与至少一个字段名称404各自对应的目标字段值410,对原始文件402进行处理,得到文件解析结果411。
根据本发明的实施例,操作S230可以包括如下操作。
将文件解析结果输入至功能模板。利用模板引擎,渲染功能模板,得到目标代码。
根据本发明的实施例,功能模板可以包括与原始文件对应的基础框架和变量替换规则。功能模板可以按照软件包的代码格式进行调整。例如,可以手工编写与原始文件对应的目标功能代码,将目标功能代码作为功能模板的基础框架。基于Velocity模板语言,将目标功能代码中与原始文件相关的类名和表名等替换为功能模板。可以利用预定字符来标识变量替换规则。预定字符可以根据实际业务需求进行设置,在此不作限定。例如,预定字符可以为“$”、“{”和“}”中的至少之一。
根据本发明的实施例,由于目标代码是通过将文件解析结果输入至功能模板,并利用模板引擎渲染功能模板得到的,通过使用原始文件作为输入,能够直接输出与原始文件对应的目标代码,由此提高了代码生成以及后续软件包生成的效率和准确性。
根据本发明的实施例,上述软件包生成方法200还可以包括如下操作。
根据原始文件,确定与软件包对应的软件包标识和版本信息。利用持续集成工具,将软件包标识、版本信息和软件包关联存储至远程仓库。
根据本发明的实施例,在编译结果表征目标代码编译通过的情况下,可以根据目标代码,生成与原始文件对应的软件包。在获得软件包之后,可以根据原始文件,确定与软件包对应的软件包标识和版本信息。可以利用持续集成工具,将软件包标识、版本信息和软件包关联推送至远程maven仓库。将软件包标识和版本信息返回给开发人员。
以上仅是示例性实施例,但不限于此,还可以包括本领域已知的其他软件包生成方法,只要能够提高软件包生成的效率和准确性即可。
图5示意性示出了根据本发明实施例的代码开发方法的流程图。
如图5所示,该代码开发方法500包括操作S510~S530。
在操作S510,响应于接收到代码开发指令,根据代码开发指令中的业务需求信息,确定目标软件包信息。
在操作S520,根据目标软件包信息,从远程仓库获取与目标软件包信息对应的至少一个目标软件包。
在操作S530,根据至少一个目标软件包,开发目标代码。
根据本发明的实施例,目标软件包可以是利用软件包生成方法200得到的。
根据本发明的实施例,可以将生成代码开发指令的脚本预先存储于客户端中。开发人员可以利用客户端输入业务需求信息,以发起代码开发操作。响应于检测到代码开发操作,客户端可以获取与代码开发操作对应的业务需求信息。根据业务需求信息,生成代码开发指令。客户端可以将代码开发指令发送至服务器,以便于服务器根据代码开发指令开发目标代码。
根据本发明的实施例,在接收到代码开发指令之后,可以根据代码开发指令中的业务需求信息,确定与业务需求信息对应的目标软件包信息。目标软件包信息可以包括至少一个目标软件包标识和与至少一个目标软件包标识各自对应的目标版本信息。目标软件包信息还可以包括至少一个目标软件包标识之间的关联关系。
根据本发明的实施例,远程仓库中可以存储有至少一个软件包标识和与至少一个软件包标识各自对应的版本信息和软件包。在获得目标软件包信息之后,可以根据目标软件包信息中的至少一个目标软件包标识和远程仓库中的至少一个软件包标识,确定至少一个候选软件包标识。
根据本发明的实施例,可以根据目标软件包信息中的至少一个目标版本信息和与至少一个候选软件包标识各自对应的版本信息,确定目标软件包。在获得至少一个目标软件包之后,开发人员可以直接使用编译后的至少一个目标软件包,开发目标代码。
根据本发明的实施例,由于目标软件包是根据目标软件包信息从远程仓库获取的,目标软件包信息是根据代码开发指令中的业务需求信息确定的,因而能够实现目标软件包的自动获取。在此基础上,通过根据至少一个目标软件包,开发目标代码,无需在本地进行代码合并、编译和打包工作,提高了代码开发的效率和准确性。
下面参考图6和图7,对根据本发明实施例的代码开发方法500做进一步说明。
根据本发明的实施例,操作S520可以包括如下操作。
针对至少一个目标软件包标识中的每个目标软件包标识,将目标软件包标识和远程仓库中的至少一个软件包标识分别进行匹配,得到至少一个候选软件包标识。将目标版本信息和与至少一个候选软件包标识各自对应的版本信息分别进行匹配,得到目标软件包。从远程仓库获取目标软件包。
根据本发明的实施例,目标软件包信息可以包括至少一个目标软件包标识和与至少一个目标软件包标识各自对应的目标版本信息。
根据本发明的实施例,可以先根据目标软件包标识对至少一个软件包标识进行匹配,以便于对远程仓库中的至少一个软件包进行初次筛选,得到至少一个候选软件包。在此基础上,可以根据目标版本信息对至少一个候选软件包各自的版本信息进行匹配,以便于对至少一个候选软件包进行再次筛选,得到目标软件包。可以从远程仓库下载目标软件包,以进行后续的代码开发。
图6示意性示出了根据本发明实施例的根据目标软件包信息,从远程仓库获取与目标软件包信息对应的至少一个目标软件包过程的示例示意图。
如图6所示,在600中,目标软件包信息601包括至少一个目标软件包标识601_1和与至少一个目标软件包标识601_1各自对应的目标版本信息601_2。
远程仓库602可以包括至少一个软件包标识。至少一个软件包标识可以包括软件包标识603_1、软件包标识603_2、…、软件包标识603_m、…、软件包标识603_M。M可以是大于或等于1的整数,m∈{1,2,…,(M-1),M}。
针对至少一个目标软件包标识601_1中的每个目标软件包标识601_1,可以将目标软件包标识601_1和远程仓库602中的软件包标识603_1、软件包标识603_2、…、软件包标识603_m、…、软件包标识603_M分别进行匹配,得到至少一个候选软件包标识。
至少一个候选软件包标识可以包括候选软件包标识604_1、候选软件包标识604_2、…、候选软件包标识604_n、…、候选软件包标识604_N。N可以是大于或等于1的整数,n∈{1,2,…,(N-1),N}。N可以小于或等于M。
可以将目标版本信息601_2和与候选软件包标识604_1对应的版本信息605_1、与候选软件包标识604_2对应的版本信息605_2、…、与候选软件包标识604_n对应的版本信息605_n、…、与候选软件包标识604_N对应的版本信息605_N分别进行匹配,得到目标软件包606。
图7示意性示出了根据本发明实施例代码开发过程的示例示意图。
如图7所示,在700中,可以根据用于生成软件包的原始文件701,确定与原始文件701对应的解析模板703、功能模板704和数据字典702。可以根据解析模板703和数据字典702,对原始文件701进行处理,得到文件解析结果。
在获得文件解析结果之后,可以利用模板引擎705,根据功能模板704,对文件解析结果进行处理,得到与原始文件701对应的代码。可以将代码存储至本地仓库706。
可以利用持续集成工具707,对代码执行编译,得到编译结果。在编译结果表征代码编译通过的情况下,可以根据代码,生成与原始文件701对应的软件包。在获得软件包之后,可以利用持续集成工具707,将软件包存储至远程仓库708。
响应于接收到代码开发指令709,可以根据代码开发指令709中的业务需求信息709_1,确定目标软件包信息710。可以根据目标软件包信息710,从远程仓库708获取与目标软件包信息710对应的至少一个目标软件包711。可以根据至少一个目标软件包711,开发目标代码712。
以上仅是示例性实施例,但不限于此,还可以包括本领域已知的其他代码开发方法,只要能够提高代码开发的效率和准确性即可。
图8示意性示出了根据本发明实施例的软件包生成装置的框图。
如图8所示,软件包生成装置800可以包括 第一确定模块810、第一处理模块820、第二处理模块830、编译模块840和生成模块850。
第一确定模块810,用于根据用于生成软件包的原始文件,确定与原始文件对应的解析模板、功能模板和数据字典。
第一处理模块820,用于根据解析模板和数据字典,对原始文件进行处理,得到文件解析结果。
第二处理模块830,用于利用模板引擎,根据功能模板,对文件解析结果进行处理,得到与原始文件对应的目标代码。
编译模块840,用于利用持续集成工具,对目标代码执行编译,得到编译结果。
生成模块850,用于在编译结果表征目标代码编译通过的情况下,根据目标代码,生成与原始文件对应的软件包。
根据本发明的实施例,数据字典包括至少一个预设数据表标识、与至少一个预设数据表标识各自对应的预设数据表,预设数据表包括至少一个预设字段名称、与至少一个预设字段名称各自对应的预设字段值。
根据本发明的实施例,第一处理模块820可以包括解析单元、第一匹配单元、第二匹配单元、第一确定单元和处理单元。
解析单元,用于利用解析模板,对原始文件进行解析,得到与原始文件对应的至少一个数据表标识和至少一个字段名称。
第一匹配单元,用于针对至少一个数据表标识中的每个数据表标识,将数据表标识和至少一个预设数据表标识分别进行匹配,得到目标数据表标识。
第二匹配单元,用于针对至少一个字段名称中的每个字段名称,将字段名称和与目标数据表标识对应的至少一个预设字段名称分别进行匹配,得到目标字段名称。
第一确定单元,用于将与目标字段名称对应的预设字段值确定为目标字段值。
处理单元,用于根据与至少一个字段名称各自对应的目标字段值,对原始文件进行处理,得到文件解析结果。
根据本发明的实施例,第二处理模块830可以包括输入单元和渲染单元。
输入单元,用于将文件解析结果输入至功能模板。
渲染单元,用于利用模板引擎,渲染功能模板,得到目标代码。
根据本发明的实施例,原始文件还包括文件格式信息、业务需求信息和目标代码框架信息。
根据本发明的实施例,第一确定模块810可以包括第二确定单元、第三确定单元和第四确定单元。
第二确定单元,用于根据文件格式信息,确定与文件格式信息对应的解析模板。
第三确定单元,用于根据业务需求信息,确定与业务需求信息对应的数据字典。
第四确定单元,用于根据目标代码框架信息,确定与目标代码框架信息对应的功能模板。
根据本发明的实施例,软件包生成装置800还可以包括第三确定模块和存储模块。
第三确定模块,用于根据原始文件,确定与软件包对应的软件包标识和版本信息。
存储模块,用于利用持续集成工具,将软件包标识、版本信息和软件包关联存储至远程仓库。
图9示意性示出了根据本发明的实施例的代码开发装置的框图。
如图9所示,代码开发装置900可以包括第二确定模块910、获取模块920和开发模块930。
第二确定模块910,用于响应于接收到代码开发指令,根据代码开发指令中的业务需求信息,确定目标软件包信息。
获取模块920,用于根据目标软件包信息,从远程仓库获取与目标软件包信息对应的至少一个目标软件包。
开发模块930,用于根据至少一个目标软件包,开发目标代码。
根据本发明的实施例,目标软件包是利用软件包生成装置800得到的。
根据本发明的实施例,目标软件包信息包括至少一个目标软件包标识和与至少一个目标软件包标识各自对应的目标版本信息。
根据本发明的实施例,获取模块920可以包括第三匹配单元、第四匹配单元和获取单元。
第三匹配单元,用于针对至少一个目标软件包标识中的每个目标软件包标识,将目标软件包标识和远程仓库中的至少一个软件包标识分别进行匹配,得到至少一个候选软件包标识。
第四匹配单元,用于将目标版本信息和与至少一个候选软件包标识各自对应的版本信息分别进行匹配,得到目标软件包。
获取单元,用于从远程仓库获取目标软件包。
根据本发明的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本发明实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本发明实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一确定模块810、第一处理模块820、第二处理模块830、编译模块840和生成模块850中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本发明的实施例,第一确定模块810、第一处理模块820、第二处理模块830、编译模块840和生成模块850中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一确定模块810、第一处理模块820、第二处理模块830、编译模块840和生成模块850中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本发明的实施例中软件包生成装置部分与本发明的实施例中软件包生成方法部分是相对应的,软件包生成装置部分的描述具体参考软件包生成方法部分,在此不再赘述。
例如,第二确定模块910、获取模块920和开发模块930中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本发明的实施例,第二确定模块910、获取模块920和开发模块930中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第二确定模块910、获取模块920和开发模块930中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本发明的实施例中代码开发装置部分与本发明的实施例中代码开发方法部分是相对应的,代码开发装置部分的描述具体参考代码开发方法部分,在此不再赘述。
图10示意性示出了根据本发明实施例的适于实现软件包生成方法、代码开发方法的电子设备的框图。图10示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,根据本发明实施例的计算机电子设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1009加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM1003中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。
根据本发明的实施例,电子设备1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。电子设备1000还可以包括连接至I/O接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
根据本发明的实施例,根据本发明实施例的方法流程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本发明实施例的系统中限定的上述功能。根据本发明的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM 1003以外的一个或多个存储器。
本发明的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本发明实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本发明实施例所提供的软件包生成方法、代码开发方法。
在该计算机程序被处理器1001执行时,执行本发明实施例的系统/装置中限定的上述功能。根据本发明的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本发明的范围由所附权利要求及其等同物限定。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (11)
1.一种软件包生成方法,其特征在于,包括:
根据用于生成软件包的原始文件,确定与所述原始文件对应的解析模板、功能模板和数据字典;
根据所述解析模板和所述数据字典,对所述原始文件进行处理,得到文件解析结果;
利用模板引擎,根据所述功能模板,对所述文件解析结果进行处理,得到与所述原始文件对应的目标代码;
利用持续集成工具,对所述目标代码执行编译,得到编译结果;以及
在所述编译结果表征目标代码编译通过的情况下,根据所述目标代码,生成与所述原始文件对应的软件包。
2.根据权利要求1所述的方法,其特征在于,所述数据字典包括至少一个预设数据表标识、与所述至少一个预设数据表标识各自对应的预设数据表,所述预设数据表包括至少一个预设字段名称、与所述至少一个预设字段名称各自对应的预设字段值;
所述根据所述解析模板和所述数据字典,对所述原始文件进行处理,得到文件解析结果包括:
利用所述解析模板,对所述原始文件进行解析,得到与所述原始文件对应的至少一个数据表标识和至少一个字段名称;
针对所述至少一个数据表标识中的每个数据表标识,
将所述数据表标识和所述至少一个预设数据表标识分别进行匹配,得到目标数据表标识;
针对所述至少一个字段名称中的每个字段名称,
将所述字段名称和与所述目标数据表标识对应的所述至少一个预设字段名称分别进行匹配,得到目标字段名称;
将与所述目标字段名称对应的预设字段值确定为目标字段值;以及
根据与所述至少一个字段名称各自对应的目标字段值,对所述原始文件进行处理,得到所述文件解析结果。
3.根据权利要求1所述的方法,其特征在于,所述利用模板引擎,根据所述功能模板,对所述文件解析结果进行处理,得到与所述原始文件对应的目标代码包括:
将所述文件解析结果输入至所述功能模板;以及
利用所述模板引擎,渲染所述功能模板,得到所述目标代码。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述原始文件还包括文件格式信息、业务需求信息和目标代码框架信息;
所述根据用于生成软件包的原始文件,确定与所述原始文件对应的解析模板、功能模板和数据字典包括:
根据所述文件格式信息,确定与所述文件格式信息对应的所述解析模板;
根据所述业务需求信息,确定与所述业务需求信息对应的数据字典;以及
根据所述目标代码框架信息,确定与所述目标代码框架信息对应的功能模板。
5.根据权利要求1至3中任一项所述的方法,其特征在于,还包括,在所述在所述编译结果表征目标代码编译通过的情况下,根据所述目标代码,生成与所述原始文件对应的软件包之后:
根据所述原始文件,确定与所述软件包对应的软件包标识和版本信息;以及
利用所述持续集成工具,将所述软件包标识、所述版本信息和所述软件包关联存储至远程仓库。
6.一种代码开发方法,其特征在于,包括:
响应于接收到代码开发指令,根据所述代码开发指令中的业务需求信息,确定目标软件包信息;
根据所述目标软件包信息,从远程仓库获取与所述目标软件包信息对应的至少一个目标软件包;以及
根据所述至少一个目标软件包,开发目标代码;
其中,所述目标软件包是利用根据权利要求1至5中任一项所述的方法得到的。
7.根据权利要求6所述的方法,其特征在于,所述目标软件包信息包括至少一个目标软件包标识和与所述至少一个目标软件包标识各自对应的目标版本信息;
所述根据所述目标软件包信息,从远程仓库获取与所述目标软件包信息对应的至少一个目标软件包包括:
针对所述至少一个目标软件包标识中的每个目标软件包标识,
将所述目标软件包标识和所述远程仓库中的至少一个软件包标识分别进行匹配,得到至少一个候选软件包标识;
将所述目标版本信息和与所述至少一个候选软件包标识各自对应的版本信息分别进行匹配,得到所述目标软件包;以及
从所述远程仓库获取所述目标软件包。
8.一种软件包生成装置,其特征在于,包括:
第一确定模块,用于根据用于生成软件包的原始文件,确定与所述原始文件对应的解析模板、功能模板和数据字典;
第一处理模块,用于根据所述解析模板和所述数据字典,对所述原始文件进行处理,得到文件解析结果;
第二处理模块,用于利用模板引擎,根据所述功能模板,对所述文件解析结果进行处理,得到与所述原始文件对应的目标代码;
编译模块,用于利用持续集成工具,对所述目标代码执行编译,得到编译结果;以及
生成模块,用于在所述编译结果表征目标代码编译通过的情况下,根据所述目标代码,生成与所述原始文件对应的软件包。
9.一种代码开发装置,其特征在于,包括:
第二确定模块,用于响应于接收到代码开发指令,根据所述代码开发指令中的业务需求信息,确定目标软件包信息;
获取模块,用于根据所述目标软件包信息,从远程仓库获取与所述目标软件包信息对应的至少一个目标软件包;以及
开发模块,用于根据所述至少一个目标软件包,开发目标代码;
其中,所述目标软件包是利用根据权利要求8所述的装置得到的。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个指令,
其中,当所述一个或多个指令被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至5中任一项或权利要求6至7中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,其上存储有可执行指令,所述可执行指令被处理器执行时使处理器实现权利要求1至5中任一项或权利要求6至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664485.3A CN116382703B (zh) | 2023-06-07 | 2023-06-07 | 软件包生成方法、代码开发方法及装置、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664485.3A CN116382703B (zh) | 2023-06-07 | 2023-06-07 | 软件包生成方法、代码开发方法及装置、电子设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116382703A true CN116382703A (zh) | 2023-07-04 |
CN116382703B CN116382703B (zh) | 2023-08-22 |
Family
ID=86967957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310664485.3A Active CN116382703B (zh) | 2023-06-07 | 2023-06-07 | 软件包生成方法、代码开发方法及装置、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116382703B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775730A (zh) * | 2016-12-21 | 2017-05-31 | 深圳Tcl数字技术有限公司 | 程序发布方法及系统 |
US20190339947A1 (en) * | 2018-05-07 | 2019-11-07 | Red Hat, Inc. | Automatically generating code for application programming interfaces |
WO2020173128A1 (zh) * | 2019-02-27 | 2020-09-03 | 平安科技(深圳)有限公司 | 软件开发工具包的生成方法、装置及终端设备 |
CN112162753A (zh) * | 2020-09-28 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 软件部署方法、装置、计算机设备和存储介质 |
CN112380145A (zh) * | 2021-01-15 | 2021-02-19 | 树根互联技术有限公司 | Sdk生成方法、装置、设备及可读存储介质 |
US11106434B1 (en) * | 2020-07-31 | 2021-08-31 | EMC IP Holding Company LLC | Method, device, and computer program product for generating program code |
CN113377376A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 数据包生成方法、数据包生成装置、电子设备及存储介质 |
WO2022170801A1 (zh) * | 2021-02-09 | 2022-08-18 | 京东方科技集团股份有限公司 | iOS应用程序构建方法及装置、电子设备及存储介质 |
CN115408009A (zh) * | 2022-09-29 | 2022-11-29 | 建信金融科技有限责任公司 | 一种代码文件生成方法、装置、设备和存储介质 |
CN115599359A (zh) * | 2022-10-28 | 2023-01-13 | 中国建设银行股份有限公司(Cn) | 一种代码生成方法、装置、设备及介质 |
CN115599386A (zh) * | 2022-10-09 | 2023-01-13 | 建信金融科技有限责任公司(Cn) | 代码生成方法、装置、设备及存储介质 |
CN116069334A (zh) * | 2022-11-23 | 2023-05-05 | 北京东方通科技股份有限公司 | 一种基于云原生的在线开发与代码托管方法及系统 |
-
2023
- 2023-06-07 CN CN202310664485.3A patent/CN116382703B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775730A (zh) * | 2016-12-21 | 2017-05-31 | 深圳Tcl数字技术有限公司 | 程序发布方法及系统 |
US20190339947A1 (en) * | 2018-05-07 | 2019-11-07 | Red Hat, Inc. | Automatically generating code for application programming interfaces |
WO2020173128A1 (zh) * | 2019-02-27 | 2020-09-03 | 平安科技(深圳)有限公司 | 软件开发工具包的生成方法、装置及终端设备 |
US11106434B1 (en) * | 2020-07-31 | 2021-08-31 | EMC IP Holding Company LLC | Method, device, and computer program product for generating program code |
CN112162753A (zh) * | 2020-09-28 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 软件部署方法、装置、计算机设备和存储介质 |
CN112380145A (zh) * | 2021-01-15 | 2021-02-19 | 树根互联技术有限公司 | Sdk生成方法、装置、设备及可读存储介质 |
WO2022170801A1 (zh) * | 2021-02-09 | 2022-08-18 | 京东方科技集团股份有限公司 | iOS应用程序构建方法及装置、电子设备及存储介质 |
CN113377376A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 数据包生成方法、数据包生成装置、电子设备及存储介质 |
CN115408009A (zh) * | 2022-09-29 | 2022-11-29 | 建信金融科技有限责任公司 | 一种代码文件生成方法、装置、设备和存储介质 |
CN115599386A (zh) * | 2022-10-09 | 2023-01-13 | 建信金融科技有限责任公司(Cn) | 代码生成方法、装置、设备及存储介质 |
CN115599359A (zh) * | 2022-10-28 | 2023-01-13 | 中国建设银行股份有限公司(Cn) | 一种代码生成方法、装置、设备及介质 |
CN116069334A (zh) * | 2022-11-23 | 2023-05-05 | 北京东方通科技股份有限公司 | 一种基于云原生的在线开发与代码托管方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116382703B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN116594683A (zh) | 一种代码注释信息生成方法、装置、设备及存储介质 | |
CN113419740A (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
CN116414855A (zh) | 信息处理方法及装置、电子设备和计算机可读存储介质 | |
CN116382703B (zh) | 软件包生成方法、代码开发方法及装置、电子设备和介质 | |
CN113138767B (zh) | 代码语言转换方法、装置、电子设备及存储介质 | |
CN113032586B (zh) | 对文本中的时间信息进行提取的方法、装置及电子设备 | |
CN112860259B (zh) | 界面处理方法、装置、电子设备、存储介质 | |
CN116452208B (zh) | 变更交易码的确定方法、装置、设备及介质 | |
CN116820566A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN116243961A (zh) | 版本文件的处理方法、装置、电子设备及存储介质 | |
CN116821158A (zh) | 结构化查询语句生成方法、装置、电子设备和存储介质 | |
CN116301902A (zh) | 不同程序语言的转换方法、装置、设备、介质和程序产品 | |
CN116894004A (zh) | 信息展示方法及装置、电子设备和计算机可读存储介质 | |
CN117234910A (zh) | 信息处理方法、装置、设备及存储介质 | |
CN113535153A (zh) | 一种自定义标签的编码方法、装置、设备和介质 | |
CN116661838A (zh) | 开源软件识别方法、装置、设备、存储介质和程序产品 | |
CN116661857A (zh) | 数据提取方法、装置、设备及存储介质 | |
CN114265594A (zh) | 业务逻辑提取方法、装置、设备、存储介质和程序产品 | |
CN116738933A (zh) | 数据处理方法及装置、电子设备和计算机可读存储介质 | |
CN116205603A (zh) | 项目管理方法、装置、电子设备和存储介质 | |
CN115878596A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116069312A (zh) | 页面渲染方法及装置、电子设备和计算机可读存储介质 | |
CN116483804A (zh) | 数据迁移方法、装置、设备、介质和程序产品 | |
CN116932032A (zh) | 应用程序创建方法及装置、电子设备和可读存储介质 |
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 |