CN111443944B - 一种程序构建方法、装置及设备 - Google Patents
一种程序构建方法、装置及设备 Download PDFInfo
- Publication number
- CN111443944B CN111443944B CN202010534690.4A CN202010534690A CN111443944B CN 111443944 B CN111443944 B CN 111443944B CN 202010534690 A CN202010534690 A CN 202010534690A CN 111443944 B CN111443944 B CN 111443944B
- Authority
- CN
- China
- Prior art keywords
- packaging
- program
- target program
- package component
- package
- 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.)
- Active
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
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
技术领域
本说明书涉及计算机技术领域,尤其涉及一种程序构建方法、装置及设备。
背景技术
在商业化的场景下,不同业务的应用环境和基础设施是多种多样的,例如,某业务对应的后台服务器所在的机房可以是开源的自建机房,也可能是基于云服务提供商提供的公有云和私有云等,由于上述差异的存在,上层应用程序很难可以通过一套处理机制完全适配每一套技术栈,而该应用程序的核心功能和对外提供的服务往往是标准的、统一的,该部分内容与具体的技术栈往往没有关系,如果每一套技术栈都需要维护一套应用程序的代码,则维护的成本会非常高,降低了程序升级效率,且很难做到统一处理,基于此,需要提供一种应用程序的配置效率和升级效率更高的技术方案。
发明内容
本说明书实施例的目的是提供一种程序构建方法、装置及设备,以提供一种应用程序的配置效率和升级效率更高的技术方案。
为了实现上述技术方案,本说明书实施例是这样实现的:
本说明书实施例提供的一种程序构建方法,所述方法包括:获取待构建的目标程序所需的与技术栈无关的第一构建数据。基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件。根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据。基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件。基于所述第一封装组件和所述第二封装组件构建所述目标程序。
本说明书实施例提供的一种程序构建装置,所述装置包括:第一数据获取模块,获取待构建的目标程序所需的与技术栈无关的第一构建数据。第一封装模块,基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件。第二数据获取模块,根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据。第二封装模块,基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件。程序构建模块,基于所述第一封装组件和所述第二封装组件构建所述目标程序。
本说明书实施例提供的一种程序构建设备,所述程序构建设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:获取待构建的目标程序所需的与技术栈无关的第一构建数据。基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件。根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据。基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件。基于所述第一封装组件和所述第二封装组件构建所述目标程序。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一种程序构建方法实施例;
图2为本说明书一种程序构建页面的结构示意图;
图3为本说明书另一种程序构建方法实施例;
图4为本说明书一种程序构建的构建机制示意图;
图5为本说明书一种程序构建装置实施例;
图6为本说明书一种程序构建设备实施例。
具体实施方式
本说明书实施例提供一种程序构建方法、装置及设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
实施例一
如图1所示,本说明书实施例提供一种程序构建方法,该方法的执行主体可以为终端设备或服务器,其中,该服务器可以是独立的一个服务器,还可以是由多个服务器构成的服务器集群等,该服务器可以是如金融业务或网络购物业务等的后台服务器,也可以是某应用程序的后台服务器等。该终端设备可以如手机或平板电脑等移动终端设备,还可以如个人计算机等设备。本说明书实施例中以执行主体为服务器为例进行详细说明,对于终端设备的情况,可以参见下述相关内容,在此不再赘述。该方法可以应用于应用程序的构建、应用程序的部署,以及应用程序对应的服务的部署等实际应用中。基于此,应该理解本实施例中的提供的程序构建方法,并不仅仅限定于对应用程序的构建上,还可以包括应用程序的部署及应用程序对应的服务的部署等。该方法具体可以包括以下步骤:
在步骤S102中,获取待构建的目标程序所需的与技术栈无关的第一构建数据。
其中,目标程序可以任意应用程序,例如某购物网站的应用程序、即时通讯应用程序或某视频网站的应用程序等,在实际应用中不仅仅可以包括上述应用程序,还可以包括多种不同的应用程序,具体可以根据实际情况设定,本说明书实施例对此不做限定。技术栈可以是某产品在实现某一个或多个功能的过程中所需依赖的程序组件,其中可以包括如中间件、框架、数据库等。
在实施中,在商业化的场景下,不同业务的应用环境和基础设施是多种多样的,例如,某业务对应的后台服务器所在的机房可以是开源的自建机房,也可能是基于云服务提供商提供的公有云和私有云等,由于上述差异的存在,上层应用程序很难可以通过一套处理机制完全适配每一套技术栈,而该应用程序的核心功能和对外提供的服务往往是标准的、统一的,该部分内容与具体的技术栈往往没有关系,如果每一套技术栈都需要维护一套应用程序的代码,则维护的成本会非常高,且很难做到统一处理,基于此,需要提供一种将应用程序中的技术栈和非技术栈相分离,以提高应用程序的配置效率的技术方案。本说明书实施例提供一种可选的处理方案,可以包括以下内容:
基于上述内容,可以考虑将应用程序的核心功能和对外提供的服务等非技术栈相关的功能或服务抽象出来,技术栈相关的功能或服务可以通过接口和多技术栈的切换进行适配和管理,从而得到一套核心功能和多技术栈的适配及切换,并支持在不同的技术栈环境下进行部署。
可以根据实际情况,如图2所示,预先设置构建或部署某应用程序的页面,该页面中可以包括需要构建或部署该应用程序的标识、所需要的构建数据,以及构建数据之间的关联关系等对应的信息输入框,还可以包括如确定和取消等按键。当需要构建或部署某应用程序(即目标程序)时,可以开启上述页面,并在上述页面的信息输入框中输入相应数据。本说明书实施例中,可以对需要输入的数据进行分类,一种为与技术栈相关,一种为与技术栈无关,为此,上述页面也可以划分为与技术栈相关的信息输入页面和与技术栈无关的信息输入页面等。可以先开启与技术栈无关的信息输入页面,并可以在该信息输入页面中输入相关信息或数据,本实施例中,上述输入的信息或数据可以是应用程序的核心功能的数据和/或对外提供的服务的数据等。输入完成后,可以点击该信息输入页面中的确定按键,此时,服务器可以获取输入的信息或数据,并可以将获取的信息或数据作为待构建的目标程序所需的与技术栈无关的第一构建数据。
在步骤S104中,基于目标程序,对第一构建数据进行封装处理,得到第一封装组件。
在实施中,针对目标程序中的程序构建逻辑,可以对第一构建数据中的逻辑关系进行处理,例如可以基于不同数据之间存在的逻辑关系,为相应的数据设置相应的逻辑关系信息,这样第一构建数据中的数据可以具备相应的逻辑关系。通过上述处理,可以得到数据之间具备逻辑关系的第一构建数据,然后,可以将上述处理后的第一构建数据进行封装处理,最终可以得到由数据之间具备逻辑关系的第一构建数据封装而成的第一封装组件。基于上述内容,第一封装组件可以实现应用程序中核心功能的相关逻辑和/或对外提供的服务的逻辑等,具体还可以通过实际情况设定,本说明书实施例对此不做限定。
在步骤S106中,根据目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取目标程序所需的与技术栈相关的第二构建数据。
其中,运行环境信息可以是指把半编译的执行码在目标设备上运行的环境的信息。
在实施中,可以根据实际情况,预先设置与技术栈相关的信息输入页面,该页面中可以包括需要构建或部署该应用程序的标识、所需要的构建数据,以及构建数据之间的关联关系、构建数据所需要实现的功能和实现上述功能所需的运行环境信息等对应的信息输入框,还可以包括如确定和取消等按键。当需要输入与技术栈相关的信息或数据时,可以开启上述信息输入页面,并在上述信息输入页面的信息输入框中输入相应数据。本实施例中,上述输入的信息或数据可以是目标程序所需实现的功能相关的信息或数据,以及所需实现的功能对应的运行环境信息等。输入完成后,可以点击该信息输入页面中的确定按键,此时,服务器可以获取输入的信息或数据,并可以将获取的信息或数据作为目标程序所需的与技术栈相关的第二构建数据。
在步骤S108中,基于目标程序,对第二构建数据进行封装处理,得到第二封装组件。
在实施中,针对目标程序中的程序构建逻辑,可以对第二构建数据中的逻辑关系和所需实现的功能进行处理,例如可以基于不同数据之间存在的逻辑关系,为相应的数据设置相应的逻辑关系信息,这样第二构建数据中的数据可以具备相应的逻辑关系,还可以基于第二构建数据中目标程序所需实现的功能对第二构建数据中的相关数据进行处理,得到第二构建数据中功能关联关系。通过上述处理,可以得到数据之间具备逻辑关系及功能关联关系的第二构建数据,然后,可以将上述处理后的第二构建数据进行封装处理,最终可以得到由数据之间具备逻辑关系和功能关联关系的第二构建数据封装而成的第二封装组件。基于上述内容,第二封装组件可以实现应用程序中的相关业务功能等,具体还可以通过实际情况设定,本说明书实施例对此不做限定。
需要说明的是,上述步骤S102和步骤S104的处理与上述步骤S106和步骤S108的处理,在本实施例中是按照上述顺序执行的,在实际应用中,还可以通过其它顺序执行,例如先执行上述步骤S106和步骤S108的处理,之后再执行步骤S102和步骤S104的处理,或者,上述步骤S102和步骤S104的处理与上述步骤S106和步骤S108的处理还可以是同时执行等,具体可以根据实际情况设定,本说明书实施例对此不做限定。
在步骤S110中,基于第一封装组件和第二封装组件构建目标程序。
在实施中,通过上述处理可以得到第一封装组件和第二封装组件,上述两个封装组件中,一个是与技术栈无关的封装组件,另一个是与技术栈相关的封装组件,这样,目标程序中所需要的组件已准备完成,此时可以基于上述两个封装组件构建目标程序,具体地,可以将应用程序的核心功能和对外提供的服务等非技术栈相关的功能或服务抽象出来,得到第一封装组件,由技术栈相关的功能或服务生成第二封装组件,第二封装组件可以通过接口和多技术栈的切换进行适配和管理,可以将第一封装组件和第二封装组件通过相应的接口进行通信连接,然后,可以将第一封装组件和第二封装组件进行封装处理,得到封装的第一封装组件和第二封装组件。封装后的第一封装组件和第二封装组件可以进一步封装成为应用程序,即目标程序。
本说明书实施例提供一种程序构建方法,通过获取待构建的目标程序所需的与技术栈无关的第一构建数据,基于目标程序,对第一构建数据进行封装处理,得到第一封装组件,然后,根据目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取目标程序所需的与技术栈相关的第二构建数据,进而可以基于目标程序,对第二构建数据进行封装处理,得到第二封装组件;基于第一封装组件和第二封装组件构建目标程序,这样,将与技术栈无关的数据封装为一个整体,对于与技术栈相关的数据封装成一个整体,从而提高了应用程序的配置效率,而且,基于上述方式,当需要对与技术栈相关的数据或与技术栈无关的数据进行升级或修复时,可以只需要进行一次修改,则所有的与技术栈相关的数据的修改可以全部生效,从而降低了目标程序的升级成本和升级效率。
实施例二
如图3所示,本说明书实施例提供一种程序构建方法,该方法的执行主体可以为终端设备或服务器,其中,该服务器可以是独立的一个服务器,还可以是由多个服务器构成的服务器集群等,该服务器可以是如金融业务或网络购物业务等的后台服务器,也可以是某应用程序的后台服务器等。该终端设备可以如手机或平板电脑等移动终端设备,还可以如个人计算机等设备。本说明书实施例中以执行主体为服务器为例进行详细说明,对于终端设备的情况,可以参见下述相关内容,在此不再赘述。该方法可以应用于应用程序的构建、应用程序的部署,以及应用程序对应的服务的部署等实际应用中。基于此,应该理解本实施例中的提供的程序构建方法,并不仅仅限定于对应用程序的构建上,还可以包括应用程序的部署及应用程序对应的服务的部署等。该方法具体可以包括以下步骤:
在步骤S302中,获取待构建的目标程序所需的与技术栈无关的第一构建数据。
在步骤S304中,基于目标程序,对第一构建数据进行封装处理,得到第一封装组件。
在实施中,本实施例可以是以maven profile和springboot profile为基础来实现的,目标程序中的与技术栈无关的信息或数据可以抽象成独立的一个或多个不同的模块或组件,从而可以保证不同技术栈对应的为同一套第一封装组件(即可以保证不同技术栈对应的为同一套核心功能和/或对外提供的服务(也即是可以保证不同技术栈对应的为同一套核心逻辑)。
在步骤S306中,根据目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取目标程序所需的与技术栈相关的第二构建数据。
其中,第二构建数据可以包括以下中的一项或多项:SPI程序、外部依赖程序、配置项程序。其中的SPI(Serial Peripheral Interface,串行外设接口)程序可以是一种高速的同步串行接口。外部依赖程序可以是目标程序需要的该目标程序之外的程序,目标程序与外部依赖程序之间可以具有指定的依赖关系。配置项程序可以是待配置的程序等。
在步骤S308中,基于目标程序,对第二构建数据进行封装处理,得到第二封装组件。
在实际应用中,如图4所示,可以为与技术栈相关的信息或数据封装单独的SPI接口,然后,可以对不同的技术栈进行相应的适配。此外,可以针对每一套技术栈创建单独的配置文件profile,并可以通过该配置文件profile管理其对应的SPI程序、配置项程序、外部依赖程序等。
第二封装组件可以包括多个,多个第二封装组件之间可以通过SPI连接或相互关联,具体可以参见以下步骤S310和步骤S312的处理。
在步骤S310中,根据多个第二封装组件中不同第二封装组件之间的关联关系,构建多个第二封装组件之间的第一SPI接口,通过第一SPI接口对多个第二封装组件进行关联,并基于相应的配置文件为第二封装组件进行配置。
其中,配置文件可以为基于maven profile和springboot profile构建。
在实施中,多个第二封装组件中不同第二封装组件之间可以具备相应的关联关系,例如可以包括两个第二封装组件,分别为组件1和组件2,组件1在运行的过程中需要调用组件2中的相关功能,则组件1和组件2存在关联关系,即组件1调用组件2的关联关系等。基于不同第二封装组件之间所具备的关联关系,可以构建多个第二封装组件之间的SPI接口(即第一SPI接口),从而可以使得不同第二封装组件之间可以通过第一SPI接口进行数据的传输,实现不同第二封装组件之间的调用等处理。此外,由于不同的第二封装组件,其对应的功能和该功能对应的运行环境往往是不同的,为此,需要对不同的第二封装组件进行配置,从而缩短封装组件投入使用的时间,具体地,可以根据不同第二封装组件所需要实现的功能和该功能所需要的运行环境信息(其中的运行环境可以包括如开发环境、测试环境、生产环境等),预先构建第二封装组件的配置文件,该配置文件可以通过maven profile和springboot profile构建。而在不同的运行环境中,相应的配置信息可能会不同,比如数据源配置、日志文件配置、以及应用程序运行过程中的基本配置等,为此,可以基于不同的运行环境来构建相应的配置文件等,具体可以根据实际情况设定,本说明书实施例对此不做限定。通过上述方式构建相应的配置文件后,可以基于该配置文件为相应的第二封装组件进行配置。
在步骤S312中,通过第一封装组件与第二封装组件之间的第二SPI接口,将第一封装组件与第二封装组件相关联,基于关联后的第一封装组件和第二封装组件构建目标程序。
在实施中,通过上述方式可以得到多个第二封装组件之间的关联关系和相应的配置信息,由于第二封装组件的运行,需要第一封装组件中的核心功能或对外提供的服务,因此,还可以构建第一封装组件与第二封装组件之间的SPI接口,以便第二封装组件可以与第一封装组件进行信息交互。然后,可以对关联后的第一封装组件和第二封装组件进行进一步的封装,得到相应的目标程序。
此外,通过上述方式构建相应的目标程序后,可以在不同的技术栈的运行环境下,通过激活对应的配置文件profile来实现相应的第二封装组件的打包和部署,具体可以参见下述步骤S314和步骤S316的处理。
在步骤S314中,基于第二封装组件,生成第二封装组件对应的可执行JAR文件。
其中,第二封装组件中不同阶段可以通过maven profile或springboot profile进行切换。
在实施中,第二封装组件中可以包括打包阶段和部署阶段,在打包阶段,可以通过maven profile或springboot profile生成对应技术栈的可执行JAR文件,其中,以下提供两种可选的处理方式,针对开源技术栈,可以通过mvn package-Popensource的方式进行不同技术栈的打包处理,针对商业技术栈,可以通过mvn package-Penterprise的方式进行不同技术栈的打包处理,具体的打包处理过程可以参见上述相关内容。
在步骤S316中,激活第二封装组件的配置文件,并运行上述可执行JAR文件。
在实施中,在部署阶段,可以通过maven profile或springboot profile激活第二封装组件的配置文件,同时,可以触发运行上述可执行JAR文件,其中,以下提供两种可选的处理方式,针对开源技术栈,可以通过java -jar -Dspring.profiles.active=opensource的方式进行不同技术栈的打包处理,针对商业技术栈,可以通过java -jar -Dspring.profiles.active=enterprise的方式进行不同技术栈的部署处理,具体的部署处理过程可以参见上述相关内容。
本说明书实施例提供一种程序构建方法,通过获取待构建的目标程序所需的与技术栈无关的第一构建数据,基于目标程序,对第一构建数据进行封装处理,得到第一封装组件,然后,根据目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取目标程序所需的与技术栈相关的第二构建数据,进而可以基于目标程序,对第二构建数据进行封装处理,得到第二封装组件;基于第一封装组件和第二封装组件构建目标程序,这样,将与技术栈无关的数据封装为一个整体,对于与技术栈相关的数据封装成一个整体,从而提高了应用程序的配置效率,而且,基于上述方式,当需要对与技术栈相关的数据或与技术栈无关的数据进行升级或修复时,可以只需要进行一次修改,则所有的与技术栈相关的数据的修改可以全部生效,从而降低了目标程序的升级成本和升级效率。
此外,本说明书实施例还可以实现通过一套应用代码,基于不同的配置文件profile管理不同技术栈的差异,降低了研发流程管理的成本,同时目标程序的核心逻辑和三方依赖信息共用一份,当目标程序升级和Bugfix时,只需要进行一次修改则所有技术栈生效,降低了升级成本,提高了目标程序的升级效率,同时,本说明书实施例的方案简单易行,通过组合maven profile、spring profile、SPI等基础能力来解决较复杂的问题。
实施例三
以上为本说明书实施例提供的程序构建方法,基于同样的思路,本说明书实施例还提供一种程序构建装置,如图5所示。
该程序构建装置包括:第一数据获取模块501、第一封装模块502、第二数据获取模块503、第二封装模块504和程序构建模块505其中:
第一数据获取模块501,获取待构建的目标程序所需的与技术栈无关的第一构建数据;
第一封装模块502,基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件;
第二数据获取模块503,根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据;
第二封装模块504,基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件;
程序构建模块505,基于所述第一封装组件和所述第二封装组件构建所述目标程序。
本说明书实施例中,所述第二封装组件包括多个,所述装置还包括:
关联配置模块,根据多个所述第二封装组件中不同所述第二封装组件之间的关联关系,构建多个所述第二封装组件之间的第一SPI接口,通过所述第一SPI接口对多个所述第二封装组件进行关联,并基于相应的配置文件为所述第二封装组件进行配置。
本说明书实施例中,所述配置文件为基于maven profile和springboot profile构建。
本说明书实施例中,所述第二封装组件中不同阶段通过maven profile或springboot profile进行切换。
本说明书实施例中,所述第二封装组件中包括打包阶段和部署阶段,所述装置还包括:
打包模块,基于所述第二封装组件,生成所述第二封装组件对应的可执行JAR文件;
部署模块,激活所述第二封装组件的配置文件,并运行所述可执行JAR文件。
本说明书实施例中,所述程序构建模块505,通过所述第一封装组件与所述第二封装组件之间的第二SPI接口,将所述第一封装组件与所述第二封装组件相关联,基于关联后的所述第一封装组件和所述第二封装组件构建所述目标程序。
本说明书实施例中,所述第二构建数据包括以下中的一项或多项:SPI程序、外部依赖程序、配置项程序。
本说明书实施例提供一种程序构建装置,通过获取待构建的目标程序所需的与技术栈无关的第一构建数据,基于目标程序,对第一构建数据进行封装处理,得到第一封装组件,然后,根据目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取目标程序所需的与技术栈相关的第二构建数据,进而可以基于目标程序,对第二构建数据进行封装处理,得到第二封装组件;基于第一封装组件和第二封装组件构建目标程序,这样,将与技术栈无关的数据封装为一个整体,对于与技术栈相关的数据封装成一个整体,从而提高了应用程序的配置效率,而且,基于上述方式,当需要对与技术栈相关的数据或与技术栈无关的数据进行升级或修复时,可以只需要进行一次修改,则所有的与技术栈相关的数据的修改可以全部生效,从而降低了目标程序的升级成本和升级效率。
此外,本说明书实施例还可以实现通过一套应用代码,基于不同的配置文件profile管理不同技术栈的差异,降低了研发流程管理的成本,同时目标程序的核心逻辑和三方依赖信息共用一份,当目标程序升级和Bugfix时,只需要进行一次修改则所有技术栈生效,降低了升级成本,提高了目标程序的升级效率,同时,本说明书实施例的方案简单易行,通过组合maven profile、spring profile、SPI等基础能力来解决较复杂的问题。
实施例四
以上为本说明书实施例提供的程序构建装置,基于同样的思路,本说明书实施例还提供一种程序构建设备,如图6所示。
所述程序构建设备可以为上述实施例提供的程序构建服务器。
程序构建设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器601和存储器602,存储器602中可以存储有一个或一个以上存储应用程序或数据。其中,存储器602可以是短暂存储或持久存储。存储在存储器602的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对程序构建设备中的一系列计算机可执行指令。更进一步地,处理器601可以设置为与存储器602通信,在程序构建设备上执行存储器602中的一系列计算机可执行指令。程序构建设备还可以包括一个或一个以上电源603,一个或一个以上有线或无线网络接口604,一个或一个以上输入输出接口605,一个或一个以上键盘606。
具体在本实施例中,程序构建设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对程序构建设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
获取待构建的目标程序所需的与技术栈无关的第一构建数据;
基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件;
根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据;
基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件;
基于所述第一封装组件和所述第二封装组件构建所述目标程序。
本说明书实施例中,所述第二封装组件包括多个,所述方法还包括:
根据多个所述第二封装组件中不同所述第二封装组件之间的关联关系,构建多个所述第二封装组件之间的第一SPI接口,通过所述第一SPI接口对多个所述第二封装组件进行关联,并基于相应的配置文件为所述第二封装组件进行配置。
本说明书实施例中,所述配置文件为基于maven profile和springboot profile构建。
本说明书实施例中,所述第二封装组件中不同阶段通过maven profile或springboot profile进行切换。
本说明书实施例中,所述第二封装组件中包括打包阶段和部署阶段,还包括:
基于所述第二封装组件,生成所述第二封装组件对应的可执行JAR文件;
激活所述第二封装组件的配置文件,并运行所述可执行JAR文件。
本说明书实施例中,所述基于所述第一封装组件和所述第二封装组件构建所述目标程序,包括:
通过所述第一封装组件与所述第二封装组件之间的第二SPI接口,将所述第一封装组件与所述第二封装组件相关联,基于关联后的所述第一封装组件和所述第二封装组件构建所述目标程序。
本说明书实施例中,所述第二构建数据包括以下中的一项或多项:SPI程序、外部依赖程序、配置项程序。
本说明书实施例提供一种程序构建设备,通过获取待构建的目标程序所需的与技术栈无关的第一构建数据,基于目标程序,对第一构建数据进行封装处理,得到第一封装组件,然后,根据目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取目标程序所需的与技术栈相关的第二构建数据,进而可以基于目标程序,对第二构建数据进行封装处理,得到第二封装组件;基于第一封装组件和第二封装组件构建目标程序,这样,将与技术栈无关的数据封装为一个整体,对于与技术栈相关的数据封装成一个整体,从而提高了应用程序的配置效率,而且,基于上述方式,当需要对与技术栈相关的数据或与技术栈无关的数据进行升级或修复时,可以只需要进行一次修改,则所有的与技术栈相关的数据的修改可以全部生效,从而降低了目标程序的升级成本和升级效率。
此外,本说明书实施例还可以实现通过一套应用代码,基于不同的配置文件profile管理不同技术栈的差异,降低了研发流程管理的成本,同时目标程序的核心逻辑和三方依赖信息共用一份,当目标程序升级和Bugfix时,只需要进行一次修改则所有技术栈生效,降低了升级成本,提高了目标程序的升级效率,同时,本说明书实施例的方案简单易行,通过组合maven profile、spring profile、SPI等基础能力来解决较复杂的问题。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程程序构建设备的处理器以产生一个机器,使得通过计算机或其他可编程程序构建设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程程序构建设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程程序构建设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (13)
1.一种程序构建方法,所述方法包括:
获取待构建的目标程序所需的与技术栈无关的第一构建数据;
基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件;
根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据;
基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件;
基于所述第一封装组件和所述第二封装组件构建所述目标程序。
2.根据权利要求1所述的方法,所述第二封装组件包括多个,所述方法还包括:
根据多个所述第二封装组件中不同所述第二封装组件之间的关联关系,构建多个所述第二封装组件中不同所述第二封装组件之间的第一SPI接口,通过所述第一SPI接口对多个所述第二封装组件中不同所述第二封装组件进行关联,并基于相应的配置文件为所述第二封装组件进行配置。
3. 根据权利要求2所述的方法,所述配置文件为基于maven profile和springbootprofile构建。
4. 根据权利要求3所述的方法,所述第二封装组件中不同阶段通过maven profile或springboot profile进行切换。
5.根据权利要求4所述的方法,所述第二封装组件中包括打包阶段和部署阶段,所述方法还包括:
基于所述第二封装组件,生成所述第二封装组件对应的可执行JAR文件;
激活所述第二封装组件的配置文件,并运行所述可执行JAR文件。
6.根据权利要求2所述的方法,所述基于所述第一封装组件和所述第二封装组件构建所述目标程序,包括:
通过所述第一封装组件与所述第二封装组件之间的第二SPI接口,将所述第一封装组件与所述第二封装组件相关联,基于关联后的所述第一封装组件和所述第二封装组件构建所述目标程序。
7.根据权利要求1-6中任一项所述的方法,所述第二构建数据包括以下中的一项或多项:SPI程序、外部依赖程序、配置项程序。
8.一种程序构建装置,所述装置包括:
第一数据获取模块,获取待构建的目标程序所需的与技术栈无关的第一构建数据;
第一封装模块,基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件;
第二数据获取模块,根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据;
第二封装模块,基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件;
程序构建模块,基于所述第一封装组件和所述第二封装组件构建所述目标程序。
9.根据权利要求8所述的装置,所述第二封装组件包括多个,所述装置还包括:
关联配置模块,根据多个所述第二封装组件中不同所述第二封装组件之间的关联关系,构建多个所述第二封装组件中不同所述第二封装组件之间的第一SPI接口,通过所述第一SPI接口对多个所述第二封装组件中不同所述第二封装组件进行关联,并基于相应的配置文件为所述第二封装组件进行配置。
10. 根据权利要求9所述的装置,所述配置文件为基于maven profile和springbootprofile构建。
11. 根据权利要求10所述的装置,所述第二封装组件中不同阶段通过maven profile或springboot profile进行切换。
12.根据权利要求11所述的装置,所述第二封装组件中包括打包阶段和部署阶段,所述装置还包括:
打包模块,基于所述第二封装组件,生成所述第二封装组件对应的可执行JAR文件;
部署模块,激活所述第二封装组件的配置文件,并运行所述可执行JAR文件。
13. 一种程序构建设备,所述程序构建设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取待构建的目标程序所需的与技术栈无关的第一构建数据;
基于所述目标程序,对所述第一构建数据进行封装处理,得到第一封装组件;
根据所述目标程序所需实现的功能和所需实现的功能对应的运行环境信息,获取所述目标程序所需的与技术栈相关的第二构建数据;
基于所述目标程序,对所述第二构建数据进行封装处理,得到第二封装组件;
基于所述第一封装组件和所述第二封装组件构建所述目标程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010534690.4A CN111443944B (zh) | 2020-06-12 | 2020-06-12 | 一种程序构建方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010534690.4A CN111443944B (zh) | 2020-06-12 | 2020-06-12 | 一种程序构建方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443944A CN111443944A (zh) | 2020-07-24 |
CN111443944B true CN111443944B (zh) | 2020-09-08 |
Family
ID=71652204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010534690.4A Active CN111443944B (zh) | 2020-06-12 | 2020-06-12 | 一种程序构建方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443944B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434158B (zh) * | 2021-07-08 | 2023-12-15 | 恒安嘉新(北京)科技股份公司 | 一种大数据组件的自定义管理方法、装置、设备及介质 |
CN116450107B (zh) * | 2023-04-04 | 2023-12-01 | 北京科乐园网络科技有限公司 | 低代码平台二次开发软件的方法、装置、电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664239B (zh) * | 2018-05-21 | 2021-08-03 | 中信百信银行股份有限公司 | 一种基于微服务的跨技术栈web前端开发系统及方法 |
CN109144478B (zh) * | 2018-07-12 | 2022-02-25 | 北京猫眼文化传媒有限公司 | 组件框架系统以及组件框架系统的使用方法 |
CN109284093A (zh) * | 2018-10-26 | 2019-01-29 | 深圳易嘉恩科技有限公司 | 基于前端技术的跨平台应用开发框架及其实现方法 |
CN111124391A (zh) * | 2019-12-18 | 2020-05-08 | 中科全维科技(苏州)有限公司 | 一种桌面端软件挂件视窗管理方法和系统 |
-
2020
- 2020-06-12 CN CN202010534690.4A patent/CN111443944B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111443944A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107545030B (zh) | 数据血缘关系的处理方法、装置及设备 | |
CN110134668B (zh) | 应用于区块链的数据迁移方法、装置和设备 | |
CN107092475B (zh) | 一种交互控件的调用方法及装置 | |
CN107045438B (zh) | 一种应用顶层视图处理方法、装置及组件 | |
CN107506181A (zh) | 业务处理、数据处理方法、装置以及电子设备 | |
CN111443944B (zh) | 一种程序构建方法、装置及设备 | |
CN114327759B (zh) | 区块链数据的处理方法及装置 | |
WO2019022827A1 (en) | SYSTEMS AND METHODS FOR PROVIDING A RETOUCHABLE ROM MICROLOGICIEL | |
CN111752633A (zh) | 代码加载方法、装置及设备 | |
CN111090425B (zh) | 一种程序封装方法、装置及电子设备 | |
CN109597678A (zh) | 任务处理方法及装置 | |
CN111768303A (zh) | 交易处理方法、装置、设备及系统 | |
CN110046052B (zh) | 一种服务调用方法及装置 | |
CN111190692A (zh) | 一种基于鲲鹏处理器的监控方法、系统及可读介质 | |
CN111459573B (zh) | 一种智能合约执行环境的启动方法以及装置 | |
CN110008035B (zh) | 数据接口扩展方法、数据处理方法、装置及设备 | |
CN109597695A (zh) | 一种数据处理方法、装置及设备 | |
CN111367577A (zh) | 加载应用的插件的方法、装置和终端 | |
CN107402749B (zh) | 实现图片加载库的方法及装置 | |
CN108681492A (zh) | 数据处理方法及装置 | |
CN114518894A (zh) | 程序更新处理方法及装置 | |
CN114661826A (zh) | 基于区块链的数据处理方法、装置及设备 | |
CN113377415A (zh) | 应用发布方法及装置 | |
CN117614877B (zh) | 一种网络安全检测系统 | |
CN114546524B (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 |