应用构建方法和装置与流程

文档序号:12176475阅读:235来源:国知局
应用构建方法和装置与流程

本申请涉及计算机技术领域,具体涉及应用程序开发技术领域,尤其涉及应用构建方法和装置。



背景技术:

软件的构建在软件工程的整个过程中占有很大的比重,贯穿软件开发、测试、发布、部署、升级的整个过程。目前,绝大多数软件项目都需要构建(或者编译)的支持,以取得更高的研发效率和更优越的运行时性能。软件构建包含不定数量、不定顺序的步骤。

然而,目前业界的构建工具在面对复杂软件项目的构建时,存在以下一些不足:(1)构建操作是基于文件的,即,每一个构建操作都需要读写磁盘文件,并需要手动设置操作目录,严重影响构建速度;(2)增量构建大多以任务为单位,这可能导致针对未改动文件有许多不必要的重复构建行为,再次影响了速度和效率;(3)构建任务大都基于容易枚举的文件,无法处理不可枚举的文件;(4)不能定制构建的流程,更不能定制并行的构建流程。综上所述,目前业界的常用构建工具不能完美地胜任越来越复杂的软件项目构建。



技术实现要素:

本申请的目的在于提出一种改进的应用构建方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种应用构建方法,所述方法包括:获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及所述构建操作集合中各个构建操作之间的执行顺序信息;按照预定义的文件存储路径与所述构建操作集合中各个入口构建操作的对应关系,将所述输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中,其中,由每个入口构建操作所对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是该入口构建操作的输入参数;对所述构建操作集合中的每个构建操作,执行以下第一构建步骤:在该构建操作没有前置构建操作或前置构建操作都已经完成的情况下,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作,并在该构建操作有后置构建操作的情况下将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中;将各个出口构建操作执行完所述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件。

第二方面,本申请提供了一种应用构建装置,所述装置包括:获取单元,配置用于获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及所述构建操作集合中各个构建操作之间的执行顺序信息;划分单元,配置用于按照预定义的文件存储路径与所述构建操作集合中各个入口构建操作的对应关系,将所述输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中,其中,由每个入口构建操作所对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是该入口构建操作的输入参数;执行单元,配置用于对所述构建操作集合中的每个构建操作,执行以下第一构建步骤:在该构建操作没有前置构建操作或前置构建操作都已经完成的情况下,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作,并在该构建操作有后置构建操作的情况下将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中;存储单元,配置用于将各个出口构建操作执行完所述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件。

本申请提供的应用构建方法和装置,通过获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及所述构建操作集合中各个构建操作之间的执行顺序信息;然后,按照预定义的文件存储路径与构建操作集合中各个入口构建操作的对应关系,将输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中;接着,对构建操作集合中的每个构建操作,执行第一构建步骤;最后,将各个出口构建操作执行完第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。实现了定制应用构建的流程,提高了应用构建的灵活性;并且在整个构建的过程中只读写一次磁盘中的文件,从而提高了构建速度。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是根据本申请的应用构建方法的一个实施例的流程图;

图2是根据本申请的应用构建方法的一个应用场景的示意图;

图3a-图3c是根据本申请的应用构建方法的又一个实施例的流程图;

图4是根据本申请的应用构建装置的一个实施例的结构示意图;

图5是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了根据本申请的应用构建方法的一个实施例的流程100。所述的应用构建方法,包括以下步骤:

步骤101,获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及构建操作集合中各个构建操作之间的执行顺序信息。

在本实施例中,应用构建方法运行于其上的电子设备可以本地或者远程地从与上述电子设备网络连接的其他电子设备获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及构建操作集合中各个构建操作之间的执行顺序信息。

在本实施例中,构建操作用于表征对该构建操作的输入参数进行的具体操作。构建操作可以通过具体的程序代码、程序代码中封装好的函数或者封装好的应用程序接口(API,Application Program Interface)来实现对该构建操作的输入参数进行的具体操作并返回输出参数。具体采用何种形式在本申请中不做具体限定。

在本实施例中,各个构建操作之间的执行顺序信息用于表征各个构建操作之间的执行先后关系。

在本实施例的一些可选的实现方式中,构建操作集合中执行顺序相邻的两个构建操作,将执行顺序在前的划分为前置构建操作,将执行顺序在后的划分为后置构建操作;即,对执行顺序相邻的两个构建操作,执行顺序在前的构建操作是执行顺序在后的构建操作的前置构建操作,执行顺序在后的构建操作是执行顺序在前的构建操作的后置构建操作。构建操作可以没有前置构建操作,对于没有前置构建操作的构建操作划分为入口构建操作;构建操作也可以没有后置构建操作,对于没有后置构建操作的构建操作划分为出口构建操作。构建操作也可以有至少一个前置构建操作或者至少一个后置构建操作。构建操作集合中的各个构建操作之间可以相同也可以不相同。

在本实施例的一些可选的实现方式中,构建操作可以包括以下至少一项:去除注释、合并、代码混淆、压缩、加密、解密。

在本实施例的一些可选的实现方式中,用于构建应用的输入文件集合可以是位于上述电子设备本地或者与上述电子设备网络连接的其他电子设备中的指定文件夹及其子文件夹中的所有文件。

在本实施例的一些可选的实现方式中,用于构建应用的输入文件集合也可以是位于上述电子设备本地或者与上述电子设备网络连接的其他电子设备中的多个指定文件夹中的多个指定文件名的文件。

在本实施例的一些可选的实现方式中,上述电子设备可以是从存储在上述电子设备本地或者与上述电子设备网络连接的其他电子设备中的构建操作定义文件中获取用于构建应用的构建操作集合以及构建操作集合中各个构建操作之间的执行顺序信息。作为示例,可以从指定的记录有用于构建应用的构建操作集合以及构建操作集合中各个构建操作之间的执行顺序信息的Javascript(一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在网页上使用,用来给网页增加动态功能)文件中读取。可以理解的是,构建操作定义文件的内容可以由用户根据所构建的应用不同而编写不同的构建操作和各个构建操作之间的执行顺序信息,从而可以定制应用构建的流程。

步骤102,按照预定义的文件存储路径与构建操作集合中各个入口构建操作的对应关系,将输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中。

在本实施例中,基于步骤101中得到的输入文件集合以及构建操作集合中的各个入口构建操作,上述电子设备可以按照预定义的文件存储路径与构建操作集合中各个入口构建操作的对应关系,将输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中。其中,由每个入口构建操作所对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是该入口构建操作的输入参数。

在本实施例的一些可选的实现方式中,可以按照输入文件的文件扩展名来定义文件存储路径与构建操作集合中各个入口构建操作的对应关系。例如,位于“D:\filesforconstruction\”文件夹中的所有扩展名为“.png”、“.jpg”或者“.gif”的文件对应“复制”入口构建操作;位于“D:\filesforconstruction\”文件夹中的所有扩展名为“.js”的文件对应“Babel(下一代的JavaScript语法编译器)”入口构建操作。

在本实施例的一些可选的实现方式中,也可以按照输入文件所在的文件夹来定义文件存储路径与构建操作集合中各个入口构建操作的对应关系。例如,位于“D:\filesforconstruction\img\”文件夹中的所有文件对应“复制”入口构建操作;位于“D:\filesforconstruction\src\”文件夹中的所有文件,对应“Babel(下一代的JavaScript语法编译器)”入口构建操作。

在本实施例的一些可选的实现方式中,还可以按照组合输入文件所在的文件夹和输入文件的扩展名来定义文件存储路径与构建操作集合中各个入口构建操作的对应关系。例如,位于“D:\filesforconstruction\img\”文件夹中的所有扩展名为“.png”、“.jpg”或者“.gif”的文件对应“复制”入口构建操作;位于“D:\filesforconstruction\src\”文件夹中的所有扩展名为“.js”的文件对应“Babel(下一代的JavaScript语法编译器)”入口构建操作;位于“D:\filesforconstruction\css\”文件夹中的所有扩展名为“.less”的文件对应“Less(将.less文件预编译为.css文件)”入口构建操作;位于“D:\filesforconstruction\css\”文件夹中的所有扩展名为“.sass”的文件对应“Sass(将.sass文件预编译为.css文件)”入口构建操作;位于“D:\filesforconstruction\css\”文件夹中的所有扩展名为“.styl”的文件对应“Stylus(将.styl文件预编译为.css文件)”入口构建操作。

步骤103,对构建操作集合中的每个构建操作,执行第一构建步骤。

在本实施例中,上述电子设备可以在步骤102中为每个入口构建操作都设置了输入参数后,对构建操作集合中的每个构建操作,执行以下第一构建步骤:在该构建操作没有前置构建操作或前置构建操作都已经完成的情况下,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作,并在该构建操作有后置构建操作的情况下将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中。在对各个构建操作执行第一构建步骤的过程中,对各个入口构建操作,在步骤102中已经为各个入口构建操作设置了输入参数,并以文件对象的形式存在于内存中;对于每个非入口构建操作,该非入口构建操作的输入参数是该非入口构建操作的各个前置构建参数的输出参数。因此每个构建操作执行第一步骤的过程都没有涉及到读写磁盘操作,均在内存中进行操作,从而可以提高构建速度。

在本实施例的一些可选的实现方式中,上述电子设备可以为每个构建操作设置前置构建操作已完成数目,并在步骤103执行之前,将每个构建操作的前置构建操作已完成数目设置为0。在步骤102执行的过程中,当任何一个构建操作完成的时候,可以给该构建操作的各个后置构建操作发送该构建操作已完成的消息。同时对任何一个收到前置构建操作已完成消息的构建操作,将该构建操作的前置构建操作已完成数目做加一操作。这样,上述电子设备可以在该构建操作的前置构建操作已完成数目达到该构建操作的前置构建操作数目的情况下确认该构建操作的前置构建操作都已经完成。

需要说明的是,在本申请中,各个构建操作之间不存在循环执行顺序,即,本申请中对输入文件集合执行构建操作的过程中,不会出现死循环。以构建操作集合中每个构建操作为节点,以各个构建操作之间的执行顺序为节点间的有向连接线而形成拓扑结构图,该拓扑结构图为有向无环图(DAG,Directed Acyclic Graph)。

步骤104,将各个出口构建操作执行完第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。

在本实施例中,上述电子设备可以将各个出口构建操作执行完第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。这里,所存储到磁盘的各个文件是构建所得到的应用的文件。

在本实施例的一些可选的实现方式中,步骤102也可以如下进行:

首先,上述电子设备可以按照预定义的文件存储路径与所述构建操作集合中各个入口构建操作的对应关系,对所述输入文件集合中的每个输入文件,查找与该输入文件的文件存储路径对应的入口构建操作。

接着,响应于找到与该输入文件的文件存储路径对应的入口构建操作,则将该输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中;响应于未找到与该输入文件的文件存储路径对应的入口构建操作,则将该输入文件划分到剩余文件子集合中。

基于上述的步骤102的可选实现方式,步骤104也可以如下进行:

首先,将各个出口构建操作执行完第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件的第一子集;

然后,将上述步骤102的可选实现方式中剩余文件集合中的各个文件的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件的第二子集。

基于上述步骤102和步骤104的可选实现方式,上述电子设备可以实现将预定义的文件存储路径与构建操作集合中各个入口构建操作的对应关系中无法枚举的输入文件划分到统一的剩余文件子集合中,而该剩余文件子集合中的文件是不需要任何操作,只需要直接另存为构建所得到的应用中的文件即可。

继续参见图2,图2是根据本实施例的应用构建方法的应用场景的一个示意图。在图2的应用场景中,用于构建应用的输入文件集合按照预定义的文件存储路径与构建操作集合中各个入口构建操作的对应关系,被划分为与入口构建操作A1对应的输入文件子集合、与入口构建操作B1对应的输入文件子集合和与入口构建操作C1对应的输入文件子集合,其中,由与入口构建操作A1对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是入口构建操作A1的输入参数,由与入口构建操作B1对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是入口构建操作B1的输入参数,由与入口构建操作C1对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是入口构建操作C1的输入参数。然后,上述电子设备可以基于构建操作集合中的各个构建操作以及各个构建操作之间的执行顺序信息执行构建过程。这里,构建流程整体的执行顺序可以是不同的。例如,执行顺序可以是“A1→A2→A3→B1→B2→B4→C1→C2→B3→D→C3→E”,还可以是“A1→A2→B1→B2→B4→B3→C1→C2→C3→E→A3→D”。最后,出口构建操作D和出口构建操作E的输出参数中的各个文件对象的文件内容会被写入磁盘,并且所写入磁盘的文件就是构建所得到的应用的各个文件。

本申请的上述实施例提供的方法通过将应用构建的过程灵活定义,并可以随时修改,增加了应用构建的灵活性;同时整个构建过程对每个输入文件只涉及到一次磁盘读操作,提高了应用构建的速度。

进一步参考图3a-图3c,其示出了应用构建方法的又一个实施例的流程300。如图3a所示,该应用构建方法的流程300,包括以下步骤:

步骤301,获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及构建操作集合中各个构建操作之间的执行顺序信息。

步骤302,按照预定义的文件存储路径与构建操作集合中各个入口构建操作的对应关系,将输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中。

在本实施例中,步骤301和步骤302的具体操作分别与图1对应的实施例100中的步骤101和步骤102的具体操作基本相同,在此不再赘述。

步骤303,对构建操作集合中的每个构建操作,执行第一构建步骤。

在本实施例中,上述电子设备可以在步骤302中为每个入口构建操作都设置了输入参数后,对构建操作集合中的每个构建操作,执行第一构建步骤,这里第一构建步骤可以包括子步骤3031-3039,如图3b所示。

步骤3031,判断该构建操作是否没有前置构建操作或前置构建操作都已经完成,如果是转到步骤3032。

步骤3032,判断该构建操作是批处理文件构建操作还是单个文件构建操作,如果是批处理文件构建操作,则转到步骤3033,如果是单个文件构建操作,则转到步骤3037。

步骤3033,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作。

步骤3034,判断该构建操作是否有后置构建操作,如果是,转到步骤3035。

步骤3035,将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中。

步骤3036,递归删除缓存中该构建操作以及该构建操作的每个后置构建操作对应的缓存区域中以该构建操作的输出参数中的每个文件对象的文件存储路径为索引的文件内容。

步骤3037,对该构建操作的输入参数中的每个文件对象,执行第二构建步骤。

在本实施例中,第二构建步骤包括子步骤30371、30372、30373、30374和30375,如图3c所示。

步骤30371,判断该构建操作对应的缓存区域中是否存在以该文件对象的文件存储路径为索引的文件内容,如果存在,则转到步骤30372,如果不存在,则转到步骤30373。

步骤30372,将由该文件对象的文件存储路径和该构建操作对应的缓存区域中以该文件对象的文件存储路径为索引的文件内容形成的文件对象添加到该构建操作的输出参数中。

步骤30373,对该文件对象的文件内容执行该构建操作。

步骤30374,将执行后所得到的文件内容以该文件对象的文件存储路径为索引写入该构建操作对应的缓存区域中。

步骤30375,将由该文件对象的文件存储路径和该构建操作对应的缓存区域中以该文件对象的文件存储路径为索引的文件内容形成的文件对象添加到该构建操作的输出参数中。

步骤3038,判断该构建操作是否有后置构建操作,如果是,转到步骤3039。

步骤3039,将对该构建操作执行完第二构建步骤后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中。

步骤304,将各个出口构建操作执行完第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。

在本实施例中,可以在步骤304后,转到步骤305、步骤309或步骤311中的任何一个,以实现对输入文件集合的监听。

步骤305,监听输入文件集合中是否有输入文件的文件内容发生变化,如果是,转到步骤306。

步骤306,获取输入文件集合中文件内容发生变化的各个输入文件,并组成变化输入文件集合。

步骤307,将该构建操作对应的缓存区域中以变化输入文件集合中每个变化输入文件的文件存储路径为索引的文件内容删除。

步骤308,对变化输入文件中的每个变化输入文件,按照预定义的文件存储路径与各个入口构建操作的对应关系,将该变化输入文件重新划分到与该变化输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中,然后转到步骤303进行重新构建。

步骤309,监听输入文件集合中每个输入文件所在的文件夹中是否有文件增加,如果是,转到步骤310。

步骤310,按照预定义的文件存储路径与各个入口构建操作的对应关系,将所增加的每个输入文件划分到与该所增加的输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中,然后转到步骤303进行重新构建。

步骤311,监听输入文件集合中是否有输入文件被删除,如果是,转到步骤312。

步骤312,对每个被删除的输入文件,将该被删除的输入文件从该被删除的输入文件上次被划分到的入口构建操作的输入文件子集合中删除。

步骤313,对构建操作集合中的每个构建操作,将该构建操作对应的缓存区域中以每个被删除的输入文件的文件存储路径为索引的文件内容删除,然后转到步骤303进行重新构建。

在本实施例的一些可选的实现方式中,上述第一构建步骤中的子步骤3031之前还可以包括如下步骤:

解析该构建操作的输入参数中每个文件对象的文件内容,并提取该文件对象所依赖的文件的文件存储路径,分别用该文件对象的文件存储路径和所提取的该文件对象所依赖的文件的文件存储路径更新文件依赖关系表中的文件存储路径和所依赖文件存储路径。

基于上述第一构建步骤的可选实现方式,步骤306也可以如下方式进行:

首先,获取输入文件集合中文件内容发生变化的各个输入文件,组成第一变化输入文件集合;

然后,对第一变化输入文件集合中的每个变化输入文件,在上述文件依赖关系表中查询与该变化输入文件的文件存储路径相同的所依赖文件存储路径,用与查询到的所依赖文件存储路径对应的各个文件存储路径所指示的各个输入文件组成依赖于该变化输入文件的依赖输入文件子集合;

接着,合并上述第一变化输入文件集合中的各个变化输入文件的依赖输入文件子集合,得到第二变化输入文件集合;

最后,组合上述第一变化输入文件集合和上述第二变化输入文件集合得到变化输入文件集合。

基于上述第一构建步骤和步骤306的可选实现方式,上述电子设备可以记录文件之间的依赖关系,并在增量构建的过程中,对文件内容发生变化的文件和依赖于文件内容发生变化的文件的文件进行重新构建。

从图3中可以看出,与图1对应的实施例相比,本实施例中的应用构建方法的流程300多出了对输入文件集合进行监听的步骤305、309和311。由此,本实施例描述的方案可以在用于构建的输入文件集合中有文件增加、删除或者有文件的文件内容发生变化的时候,仅对增加、删除或文件内容发生变化的部分进行构建,没有变化的部分不会重复构建,从而实现增量构建,减少了构建成本,提高了开发效率。

进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种应用构建装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图4所示,本实施例所述的应用构建装置400包括:获取单元401、划分单元402、执行单元403和存储单元404。其中,获取单元401,配置用于获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及上述构建操作集合中各个构建操作之间的执行顺序信息;划分单元402,配置用于按照预定义的文件存储路径与上述构建操作集合中各个入口构建操作的对应关系,将上述输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中,其中,由每个入口构建操作所对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是该入口构建操作的输入参数;执行单元403,配置用于对上述构建操作集合中的每个构建操作,执行以下第一构建步骤:在该构建操作没有前置构建操作或前置构建操作都已经完成的情况下,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作,并在该构建操作有后置构建操作的情况下将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中;存储单元404,配置用于将各个出口构建操作执行完上述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件。

在本实施例中,应用构建的装置400的获取单元401、划分单元402、执行单元403和存储单元404的具体处理及其所带来的技术效果可分别参考图1对应实施例中步骤101、步骤102、步骤103和步骤104的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述构建操作集合中执行顺序相邻的两个构建操作根据执行顺序可以划分为前置构建操作或后置构建操作,没有前置构建操作的构建操作可以划分为入口构建操作,没有后置构建操作的构建操作可以划分为出口构建操作。

本实施例的一些可选的实现方式中,上述构建操作可以包括批处理文件构建操作和单个文件构建操作;以及上述执行单元403可以进一步配置用于:判断该构建操作是批处理文件构建操作还是单个文件构建操作;如果该构建操作为批处理文件构建操作,则:对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作,并在该构建操作有后置构建操作的情况下将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中,并递归删除缓存中该构建操作以及该构建操作的每个后置构建操作对应的缓存区域中以该构建操作的输出参数中的每个文件对象的文件存储路径为索引的文件内容;如果该构建操作为单个文件构建操作,则:对该构建操作的输入参数中的每个文件对象,执行以下第二构建步骤:判断该构建操作对应的缓存区域中是否存在以该文件对象的文件存储路径为索引的文件内容;如果存在,则将由该文件对象的文件存储路径和该构建操作对应的缓存区域中以该文件对象的文件存储路径为索引的文件内容形成的文件对象添加到该构建操作的输出参数中;如果不存在,则对该文件对象的文件内容执行该构建操作,并将执行后所得到的文件内容以该文件对象的文件存储路径为索引写入该构建操作对应的缓存区域中,将由该文件对象的文件存储路径和该构建操作对应的缓存区域中以该文件对象的文件存储路径为索引的文件内容形成的文件对象添加到该构建操作的输出参数中;在该构建操作有后置构建操作的情况下将对该构建操作执行完上述第二构建步骤后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中。执行单元403的具体处理及其所带来的技术效果可参考图3a和图3b对应实施例中步骤303以及步骤303的子步骤3031到3039的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述应用构建装置400还可以包括:第一监听单元405,配置用于监听上述输入文件集合中是否有输入文件的文件内容发生变化;第一重构单元406,配置用于如果监听到上述输入文件集合中有输入文件的文件内容发生变化,则获取上述输入文件集合中文件内容发生变化的各个输入文件,并组成变化输入文件集合;对上述构建操作集合中每个构建操作,将该构建操作对应的缓存区域中以上述变化输入文件集合中每个变化输入文件的文件存储路径为索引的文件内容删除;对上述变化输入文件集合中的每个变化输入文件,按照预定义的文件存储路径与上述构建操作集合中各个入口构建操作的对应关系,将该变化输入文件重新划分到与该变化输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中;对上述构建操作集合中的每个构建操作,执行上述第一构建步骤;将各个出口构建操作执行完上述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。第一监听单元405和第一重构单元406的具体处理及其所带来的技术效果可分别参考图3a对应实施例中步骤305以及步骤306-步骤308、步骤304和步骤304的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述应用构建装置400还可以包括:第二监听单元407,配置用于监听上述输入文件集合中是否有输入文件被删除;第二重构单元408,配置用于如果监听到上述输入文件集合中有输入文件被删除,则对每个上述被删除的输入文件,将该被删除的输入文件从该被删除的输入文件上次被划分到的入口构建操作的输入文件子集合中删除;对上述构建操作集合中的每个构建操作,将该构建操作对应的缓存区域中以每个被删除的输入文件的文件存储路径为索引的文件内容删除;对上述构建操作集合中的每个构建操作,执行上述第一构建步骤;将各个出口构建操作执行完上述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。第二监听单元407和第二重构单元408的具体处理及其所带来的技术效果可分别参考图3a对应实施例中步骤311以及步骤312、步骤313、步骤303和步骤304的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述应用构建装置400还可以包括:第三监听单元409,配置用于监听上述输入文件集合中每个输入文件所在的文件夹中是否有文件增加;第三重构单元410,配置用于如果是,则按照预定义的文件存储路径与各个入口构建操作的对应关系,将所增加的每个输入文件划分到与该所增加的输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中;对上述构建操作集合中的每个构建操作,执行上述第一构建步骤;将各个出口构建操作执行完上述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘。第三监听单元409和第三重构单元410的具体处理及其所带来的技术效果可分别参考图3a对应实施例中步骤309以及步骤310、步骤303和步骤304的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述划分单元402可以包括:查找模块4021,配置用于按照预定义的文件存储路径与上述构建操作集合中各个入口构建操作的对应关系,对上述输入文件集合中的每个输入文件,查找与该输入文件的文件存储路径对应的入口构建操作;第一划分模块4022,配置用于响应于找到与该输入文件的文件存储路径对应的入口构建操作,则将该输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中;第二划分模块4023,配置用于响应于未找到与该输入文件的文件存储路径对应的入口构建操作,则将该输入文件划分到剩余文件子集合中;以及上述存储单元404可以包括:第一存储模块4041,配置用于将各个出口构建操作执行完上述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件的第一子集;第二存储模块4042,配置用于将上述剩余文件集合中的各个文件的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件的第二子集。查找模块4021、第一划分模块4022、第二划分模块4023、第一存储模块4041以及第二存储模块4042的具体处理及其所带来的技术效果可参考图1对应实施例中关于步骤102和步骤104的可选实现方式的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述在该构建操作没有前置构建操作或前置构建操作都已经完成的情况下,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作之前,上述第一构建步骤还可以包括:解析该构建操作的输入参数中每个文件对象的文件内容,并提取该文件对象所依赖的文件的文件存储路径,分别用该文件对象的文件存储路径和所提取的该文件对象所依赖的文件的文件存储路径更新文件依赖关系表中的文件存储路径和所依赖文件存储路径;以及上述第一重构单元405可以进一步配置用于:获取上述输入文件集合中文件内容发生变化的各个输入文件,组成第一变化输入文件集合;对上述第一变化输入文件集合中的每个变化输入文件,在上述文件依赖关系表中查询与该变化输入文件的文件存储路径相同的所依赖文件存储路径,用与查询到的所依赖文件存储路径对应的各个文件存储路径所指示的各个输入文件组成依赖于该变化输入文件的依赖输入文件子集合;合并上述第一变化输入文件集合中的各个变化输入文件的依赖输入文件子集合,得到第二变化输入文件集合;组合上述第一变化输入文件集合和上述第二变化输入文件集合得到变化输入文件集合。第一重构单元405的具体处理及其所带来的技术效果可参考图3对应实施例中关于第一构建步骤和步骤306的可选实现方式的相关说明,在此不再赘述。

本实施例的一些可选的实现方式中,上述构建操作包括以下至少一项:去除注释、合并、代码混淆、压缩、加密、解密。

下面参考图5,其示出了适于用来实现本申请实施例的电子设备的计算机系统500的结构示意图。

如图5所示,计算机系统500包括中央处理单元(CPU,Central Processing Unit)501,其可以根据存储在只读存储器(ROM,Read Only Memory)502中的程序或者从存储部分508加载到随机访问存储器(RAM,Random Access Memory)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。

以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、划分单元、执行单元和存储单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,存储单元还可以被描述为“存储文件的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:获取用于构建应用的输入文件集合、用于构建应用的构建操作集合以及上述构建操作集合中各个构建操作之间的执行顺序信息;按照预定义的文件存储路径与上述构建操作集合中各个入口构建操作的对应关系,将上述输入文件集合中的每个输入文件划分到与该输入文件的文件存储路径对应的入口构建操作所对应的输入文件子集合中,其中,由每个入口构建操作所对应的输入文件子集合中的各个输入文件的文件存储路径和文件内容形成的文件对象是该入口构建操作的输入参数;对上述构建操作集合中的每个构建操作,执行以下第一构建步骤:在该构建操作没有前置构建操作或前置构建操作都已经完成的情况下,对该构建操作的输入参数中各个文件对象的文件内容执行该构建操作,并在该构建操作有后置构建操作的情况下将执行该构建操作后所得到的输出参数中的各个文件对象添加到该构建操作的各个后置构建操作的输入参数中;将各个出口构建操作执行完上述第一构建步骤后所得到的输出参数中的各个文件对象的文件内容以文件形式存储到磁盘,其中,所存储到磁盘的各个文件是构建所得到的应用的文件。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1