CN104077140B - 用于持续集成的自动化编译方法和编译装置 - Google Patents
用于持续集成的自动化编译方法和编译装置 Download PDFInfo
- Publication number
- CN104077140B CN104077140B CN201410318900.0A CN201410318900A CN104077140B CN 104077140 B CN104077140 B CN 104077140B CN 201410318900 A CN201410318900 A CN 201410318900A CN 104077140 B CN104077140 B CN 104077140B
- Authority
- CN
- China
- Prior art keywords
- construction unit
- dependence
- component
- unit
- configuration 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种用于持续集成的自动化编译方法及装置,其中,自动化编译方法,包括:获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;解析所述配置文件,根据每个组件与其他组件之间的依赖关系生成每个构建单元的依赖关系集,并根据依赖关系集确定每个构建单元内的组件编译顺序;根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译。本发明的技术方案实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,提高了软件生产效率,进而确保了持续集成具有稳定、高效、准确的优点。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种用于持续集成的自动化编译方法和一种用于持续集成的自动化编译装置。
背景技术
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
自动化构建的核心在于产品标准化和构建脚本的生成。在此工具应用之前,自动化的构建脚本一直由开发人员手动维护。在开发过程中,开发人员每天都向版本库提交代码,各产品内部及外部的构建单元之间的依赖关系随时有可能变化,修改自动化的构建脚本就给开发人员增加了额外的工作负担。同时,自动化的构建还要起到对持续集成的验证作用,开发人员编写自动化的构建脚本难免存在纰漏,对于持续集成每天的完整运行有一定影响。
因此,如何能够实现自动对构建单元内各组件之间的依赖关系进行分析,提高软件生产效率成为亟待解决的技术问题。
发明内容
本发明正是基于上述技术问题,提出了一种新的用于持续集成的自动化编译方案,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,提高了软件生产效率,进而确保了持续集成具有稳定、高效、准确的优点。
有鉴于此,本发明提出了一种用于持续集成的自动化编译方法,包括:获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;解析所述配置文件,根据所述每个组件与其他组件之间的依赖关系生成所述每个构建单元的依赖关系集,并根据所述依赖关系集确定所述每个构建单元内的组件编译顺序;根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译。
在该技术方案中,通过获取用于描述每个构建单元内的组件之间的依赖关系的配置文件,以根据配置文件生成构建单元的依赖关系集,进而对构建单元的编译,使得在进行持续集成时,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,节约了人力资源,提高了软件生产效率,并且降低了软件项目的开发成本,确保持续集成具有稳定、高效、准确的优点。
在上述技术方案中,优选地,解析任一构建单元的所述配置文件的步骤具体为:判断所述配置文件的格式是否为预定的标准格式;若判定所述配置文件的格式为所述标准格式,则将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载;若判断所述配置文件的格式不是所述标准格式,则读取所述配置文件中预定义的关键字和所述任一构建单元内的预编译包的层级依赖关系,根据所述任一构建单元内的预编译包的层级依赖关系确定所述任一构建单元内的所有组件,将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载。
在该技术方案中,通过对配置文件格式是否为标准格式进行判断,使得能够针对标准格式的配置文件和非标准格式的配置文件采用不同的解析方式,进而能够准确地获取到构建单元内部的组件依赖关系。
在上述技术方案中,优选地,在对所述至少一个构建单元进行编译之前,还包括:根据所述依赖关系集判断所述每个构建单元内是否存在不依赖于其他组件的基础组件;若判定任一构建单元内存在所述基础组件,则执行所述编译的步骤;若判定任一构建单元内不存在所述基础组件,则进行报错处理。
在该技术方案中,若依赖关系集中不存在基础组件,即依赖关系集为环形依赖,则在编译时会出现死循环,影响系统的稳定性,因此,通过对依赖关系集中是否存在不依赖于其他组件的基础组件进行判断,使得能够在依赖关系集内出现问题,即出现环形依赖时,能够及时提醒开发人员,确保系统的稳定性。
在上述技术方案中,优选地,对所述至少一个构建单元进行编译的步骤具体为:根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序生成用于对所述至少一个构建单元进行编译的描述文件;按照设定的执行时间,调取并执行所述描述文件。
在上述技术方案中,优选地,还包括:根据所述每个构建单元的依赖关系集,以树形结构显示所述至少一个构建单元内的组件之间的依赖关系;在接收到显示指定组件的依赖情况的指令时,显示所述指定组件依赖的其他组件。
在该技术方案中,通过以树形结构显示构建单元内的组件之间的依赖关系,使得开发人员能够直观地掌握到构建单元内组件的依赖关系,以便于对各组件之间的依赖关系进行调整或查看。
根据本发明的另一方面,还提出了一种用于持续集成的自动化编译装置,包括:获取单元,获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;处理单元,用于解析所述配置文件,根据所述每个组件与其他组件之间的依赖关系生成所述每个构建单元的依赖关系集,并根据所述依赖关系集确定所述每个构建单元内的组件编译顺序;编译单元,用于根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译。
在该技术方案中,通过获取用于描述每个构建单元内的组件之间的依赖关系的配置文件,以根据配置文件生成构建单元的依赖关系集,进而对构建单元的编译,使得在进行持续集成时,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,节约了人力资源,提高了软件生产效率,并且降低了软件项目的开发成本,确保持续集成具有稳定、高效、准确的优点。
在上述技术方案中,优选地,所述处理单元具体用于:判断所述配置文件的格式是否为预定的标准格式,若判定所述配置文件的格式为所述标准格式,则将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载,以及若判断所述配置文件的格式不是所述标准格式,则读取所述配置文件中预定义的关键字和所述任一构建单元内的预编译包的层级依赖关系,根据所述任一构建单元内的预编译包的层级依赖关系确定所述任一构建单元内的所有组件,将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载。
在该技术方案中,通过对配置文件格式是否为标准格式进行判断,使得能够针对标准格式的配置文件和非标准格式的配置文件采用不同的解析方式,进而能够准确地获取到构建单元内部的组件依赖关系。
在上述技术方案中,优选地,还包括:判断单元,用于根据所述依赖关系集判断所述每个构建单元内是否存在不依赖于其他组件的基础组件;报错单元,用于在所述判断单元判定所述任一构建单元内不存在所述基础组件时,进行报错处理;所述编译单元还用于,在所述判断单元判定任一构建单元内存在所述基础组件时,执行所述编译的操作。
在该技术方案中,若依赖关系集中不存在基础组件,即依赖关系集为环形依赖,则在编译时会出现死循环,影响系统的稳定性,因此,通过对依赖关系集中是否存在不依赖于其他组件的基础组件进行判断,使得能够在依赖关系集内出现问题,即出现环形依赖时,能够及时提醒开发人员,确保系统的稳定性。
在上述技术方案中,优选地,所述编译单元包括:生成单元,用于根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序生成用于对所述至少一个构建单元进行编译的描述文件;执行单元,用于按照设定的执行时间,调取并执行所述描述文件。
在上述技术方案中,优选地,还包括:显示单元,用于根据所述每个构建单元的依赖关系集,以树形结构显示所述至少一个构建单元内的组件之间的依赖关系,以及在接收到显示指定组件的依赖情况的指令时,显示所述指定组件依赖的其他组件。
在该技术方案中,通过以树形结构显示构建单元内的组件之间的依赖关系,使得开发人员能够直观地掌握到构建单元内组件的依赖关系,以便于对各组件之间的依赖关系进行调整或查看。
通过以上技术方案,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,提高了软件生产效率,进而确保了持续集成具有稳定、高效、准确的优点。
附图说明
图1示出了根据本发明的实施例的用于持续集成的自动化编译方法的示意流程图;
图2示出了根据本发明的实施例的用于持续集成的自动化编译装置的示意框图;
图3A示出了根据本发明的实施例的标准化配置文件的格式示意图;
图3B示出了根据本发明的实施例的一种非标准化配置文件的格式示意图;
图4示出了根据本发明的实施例分析组件之间依赖关系的示意图;
图5示出了根据本发明的实施例的依赖情况显示方式示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的用于持续集成的自动化编译方法的示意流程图。
如图1所示,根据本发明的实施例的用于持续集成的自动化编译方法,包括:步骤102,获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;步骤104,解析所述配置文件,根据所述每个组件与其他组件之间的依赖关系生成所述每个构建单元的依赖关系集,并根据所述依赖关系集确定所述每个构建单元内的组件编译顺序;步骤106,根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译。
在该技术方案中,通过获取用于描述每个构建单元内的组件之间的依赖关系的配置文件,以根据配置文件生成构建单元的依赖关系集,进而对构建单元的编译,使得在进行持续集成时,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,节约了人力资源,提高了软件生产效率,并且降低了软件项目的开发成本,确保持续集成具有稳定、高效、准确的优点。
在上述技术方案中,优选地,解析任一构建单元的所述配置文件的步骤具体为:判断所述配置文件的格式是否为预定的标准格式;若判定所述配置文件的格式为所述标准格式,则将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载;若判断所述配置文件的格式不是所述标准格式,则读取所述配置文件中预定义的关键字和所述任一构建单元内的预编译包的层级依赖关系,根据所述任一构建单元内的预编译包的层级依赖关系确定所述任一构建单元内的所有组件,将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载。
在该技术方案中,通过对配置文件格式是否为标准格式进行判断,使得能够针对标准格式的配置文件和非标准格式的配置文件采用不同的解析方式,进而能够准确地获取到构建单元内部的组件依赖关系。
在上述技术方案中,优选地,在对所述至少一个构建单元进行编译之前,还包括:根据所述依赖关系集判断所述每个构建单元内是否存在不依赖于其他组件的基础组件;若判定任一构建单元内存在所述基础组件,则执行所述编译的步骤;若判定任一构建单元内不存在所述基础组件,则进行报错处理。
在该技术方案中,若依赖关系集中不存在基础组件,即依赖关系集为环形依赖,则在编译时会出现死循环,影响系统的稳定性,因此,通过对依赖关系集中是否存在不依赖于其他组件的基础组件进行判断,使得能够在依赖关系集内出现问题,即出现环形依赖时,能够及时提醒开发人员,确保系统的稳定性。
在上述技术方案中,优选地,对所述至少一个构建单元进行编译的步骤具体为:根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序生成用于对所述至少一个构建单元进行编译的描述文件;按照设定的执行时间,调取并执行所述描述文件。
在上述技术方案中,优选地,还包括:根据所述每个构建单元的依赖关系集,以树形结构显示所述至少一个构建单元内的组件之间的依赖关系;在接收到显示指定组件的依赖情况的指令时,显示所述指定组件依赖的其他组件。
在该技术方案中,通过以树形结构显示构建单元内的组件之间的依赖关系,使得开发人员能够直观地掌握到构建单元内组件的依赖关系,以便于对各组件之间的依赖关系进行调整或查看。
图2示出了根据本发明的实施例的用于持续集成的自动化编译装置的示意框图。
如图2所示,根据本发明的实施例的用于持续集成的自动化编译装置200,包括:获取单元202,获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;处理单元204,用于解析所述配置文件,根据所述每个组件与其他组件之间的依赖关系生成所述每个构建单元的依赖关系集,并根据所述依赖关系集确定所述每个构建单元内的组件编译顺序;编译单元206,用于根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译。
在该技术方案中,通过获取用于描述每个构建单元内的组件之间的依赖关系的配置文件,以根据配置文件生成构建单元的依赖关系集,进而对构建单元的编译,使得在进行持续集成时,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,节约了人力资源,提高了软件生产效率,并且降低了软件项目的开发成本,确保持续集成具有稳定、高效、准确的优点。
在上述技术方案中,优选地,所述处理单元204具体用于:判断所述配置文件的格式是否为预定的标准格式,若判定所述配置文件的格式为所述标准格式,则将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载,以及若判断所述配置文件的格式不是所述标准格式,则读取所述配置文件中预定义的关键字和所述任一构建单元内的预编译包的层级依赖关系,根据所述任一构建单元内的预编译包的层级依赖关系确定所述任一构建单元内的所有组件,将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载。
在该技术方案中,通过对配置文件格式是否为标准格式进行判断,使得能够针对标准格式的配置文件和非标准格式的配置文件采用不同的解析方式,进而能够准确地获取到构建单元内部的组件依赖关系。
在上述技术方案中,优选地,还包括:判断单元208,用于根据所述依赖关系集判断所述每个构建单元内是否存在不依赖于其他组件的基础组件;报错单元210,用于在所述判断单元208判定所述任一构建单元内不存在所述基础组件时,进行报错处理;所述编译单元206还用于,在所述判断单元208判定任一构建单元内存在所述基础组件时,执行所述编译的操作。
在该技术方案中,若依赖关系集中不存在基础组件,即依赖关系集为环形依赖,则在编译时会出现死循环,影响系统的稳定性,因此,通过对依赖关系集中是否存在不依赖于其他组件的基础组件进行判断,使得能够在依赖关系集内出现问题,即出现环形依赖时,能够及时提醒开发人员,确保系统的稳定性。
在上述技术方案中,优选地,所述编译单元206包括:生成单元2062,用于根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序生成用于对所述至少一个构建单元进行编译的描述文件;执行单元2064,用于按照设定的执行时间,调取并执行所述描述文件。
在上述技术方案中,优选地,还包括:显示单元212,用于根据所述每个构建单元的依赖关系集,以树形结构显示所述至少一个构建单元内的组件之间的依赖关系,以及在接收到显示指定组件的依赖情况的指令时,显示所述指定组件依赖的其他组件。
在该技术方案中,通过以树形结构显示构建单元内的组件之间的依赖关系,使得开发人员能够直观地掌握到构建单元内组件的依赖关系,以便于对各组件之间的依赖关系进行调整或查看。
以下结合图3A至图5详细说明本发明的技术方案。
本发明的技术方案需要构建控制器,用于控制执行脚本文件中定义的构建任务,本工具采用Ant(Another Nest Tool)控制器。Ant是基于Java的构建工具,可以完成不同的构建功能。Ant通过一系列的任务(Task)实现构建过程,Ant控制器负责执行任务,因此先定义它所要执行的任务。所谓任务是独立的功能单元,例如版本代码获取的任务、编译Java代码、Jsp代码的任务、执行测试组件的任务等。定义好的任务存放在Ant脚本文件(build.xml)中,系统运行时,Ant控制器可对Ant脚本文件进行解析并调用和执行这些任务。本工具中的构建任务包括:从版本控制库获取代码、编译代码、运行测试、生成记录编译及测试结果的日志文件、通过分析器提取测试结果信息。
具体通过以下步骤:
1、集成以产品为单位,通过module.xml存放的位置指定自动化编译的单元和名称。在构建单元中各项目源码以组件形式并行存放,依赖关系配置文件compentent.xml存在于每个组件下,并且拥有这个配置文件的组件才会被工具识别并编译。
2、扫描构建单元文件夹下的所有文件,找出module.xml和compentent.xml,并判断其是否标准化。
对于标准化配置文件,确定构建单元和其下面的若干组件,读取其内容转化为数据对象置于内存中。其中,标准化配置文件的格式可以如图3A所示。
对于非标准化配置,首先读取配置定义关键字,再按每个构建单元取出预编译包的层级依赖,之后按标准化进行处理。其中,非标准化配置文件的一种格式如图3B所示。
3、把compentent.xml的内容传入递规方法进行解析。具体如图4所示,其中,一个模块(即构建单元)包括组件A、B、C、D、E、F、G,其中组件之间的依赖关系为:A依赖B、C依赖A、D依赖A、E依赖F、F依赖D、G依赖E,则经过分析之后可得到组件内的依赖关系集。
该步骤的核心算法是分析图4依赖关系的递规方法。以E组件为例,E的编译依赖于F,而F又依赖于D,D也存在依赖关系,所以要递规到最后一个没有依赖的组件B,完成规递循环。如果B仍然存在依赖关系,就会出现循环依赖,在日志中记录出现问题的组件后退出程序。分析过程完成后得出了两个重要的集合:编译顺序和依赖关系集。
构建单元间依赖关系是通过引用模块jar包完成的。所有编译完成的模块(即构建单元)都会在持续集成环境里生成jar包,这些jar包在互相引用、制作安装盘时使用。
该工具解析依赖关系时有一定的纠错功能,其中,一个构建单元中至少有一基础组件使依赖终止。若配置失误就会出现死循环,即环形依赖。此时程序抛出异常并记录循环的组件名,以便开发人员进行修改。
4、生成build.xml以及其属性文件build.properties,并写入内容。按照编译顺序可以生成javac结构块的顺序。按照依赖关系集可以生成每个javac结构中的classpath的内容。
这里的编译语句包括源码编译和测试代码编译。测试代码编译语句与源码相比增加了对源码calss文件的依赖。
5、读取资源拷贝的配置文件。在该配置文件中,以key-value的形式指定了要拷贝的源路径和目标路径,为持续集成提供动态配置。
6、按源代码的目录结构,拷贝资源文件到class文件所在目录。之后按集成需要进行打包操作。
7、生成testNG结构,为自动化测试、统计测试结果做准备。
8、在定时任务中加入该工具,每天固定时间完成持续集成。
9、产品内部、产品外部依赖关系可视化。以树形结构展示出所有依赖关系,如图5所示,若在结点处点击,则可显示该部件的依赖情况。具体地,如点击组件6,则会显示组件6的依赖关系,如图5中显示组件1、组件2、组件3和组件4。
通过以上技术方案,使得系统在集成后若由于运行环境发生改变出现依赖错误时,能够通过预编译过程及时检查出这些编译错,并将错误日志定向发送给相关开发人员,以便相关人员针对性的修改。
同时,可以定时自动执行,开发和测试人员不需再关心持续集成的过程,而只查看其结果,对于有问题的报告和日志,根据日志内容进行修改并再次执行。
拷贝和打包的路径是通过配置文件定义的,为多系统集成,制作安装盘提供了灵活的解决方案。
以上结合附图详细说明了本发明的技术方案,本发明提出了一种新的用于持续集成的自动化编译方案,实现了自动对构建单元内各组件之间的依赖关系进行分析构建,无需开发人员人工分析构建单元内各组件之间的依赖关系,降低了开发人员的工作负担,提高了软件生产效率,进而确保了持续集成具有稳定、高效、准确的优点。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种用于持续集成的自动化编译方法,其特征在于,包括:
获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;
解析所述配置文件,根据所述每个组件与其他组件之间的依赖关系生成所述每个构建单元的依赖关系集,并根据所述依赖关系集确定所述每个构建单元内的组件编译顺序;
根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译;
解析任一构建单元的所述配置文件的步骤具体为:
判断所述配置文件的格式是否为预定的标准格式;
若判定所述配置文件的格式为所述标准格式,则将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载;
若判断所述配置文件的格式不是所述标准格式,则读取所述配置文件中预定义的关键字和所述任一构建单元内的预编译包的层级依赖关系,根据所述任一构建单元内的预编译包的层级依赖关系确定所述任一构建单元内的所有组件,将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载。
2.根据权利要求1所述的用于持续集成的自动化编译方法,其特征在于,在对所述至少一个构建单元进行编译之前,还包括:
根据所述依赖关系集判断所述每个构建单元内是否存在不依赖于其他组件的基础组件;
若判定任一构建单元内存在所述基础组件,则执行所述编译的步骤;
若判定任一构建单元内不存在所述基础组件,则进行报错处理。
3.根据权利要求1所述的用于持续集成的自动化编译方法,其特征在于,对所述至少一个构建单元进行编译的步骤具体为:
根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序生成用于对所述至少一个构建单元进行编译的描述文件;
按照设定的执行时间,调取并执行所述描述文件。
4.根据权利要求1至3中任一项所述的用于持续集成的自动化编译方法,其特征在于,还包括:
根据所述每个构建单元的依赖关系集,以树形结构显示所述至少一个构建单元内的组件之间的依赖关系;
在接收到显示指定组件的依赖情况的指令时,显示所述指定组件依赖的其他组件。
5.一种用于持续集成的自动化编译装置,其特征在于,包括:
获取单元,获取用于描述至少一个构建单元中每个构建单元内的每个组件与其他组件之间的依赖关系的配置文件;
处理单元,用于解析所述配置文件,根据所述每个组件与其他组件之间的依赖关系生成所述每个构建单元的依赖关系集,并根据所述依赖关系集确定所述每个构建单元内的组件编译顺序;
编译单元,用于根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序,对所述至少一个构建单元进行编译;
所述处理单元具体用于:
判断所述配置文件的格式是否为预定的标准格式,若判定所述配置文件的格式为所述标准格式,则将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载,以及
若判断所述配置文件的格式不是所述标准格式,则读取所述配置文件中预定义的关键字和所述任一构建单元内的预编译包的层级依赖关系,根据所述任一构建单元内的预编译包的层级依赖关系确定所述任一构建单元内的所有组件,将所述任一构建单元中的所有组件的内容转化为数据对象,以进行加载。
6.根据权利要求5所述的用于持续集成的自动化编译装置,其特征在于,还包括:
判断单元,用于根据所述依赖关系集判断所述每个构建单元内是否存在不依赖于其他组件的基础组件;
报错单元,用于在所述判断单元判定所述任一构建单元内不存在所述基础组件时,进行报错处理;
所述编译单元还用于,在所述判断单元判定任一构建单元内存在所述基础组件时,执行所述编译的操作。
7.根据权利要求5所述的用于持续集成的自动化编译装置,其特征在于,所述编译单元包括:
生成单元,用于根据所述每个构建单元的所述依赖关系集和每个构建单元内的组件编译顺序生成用于对所述至少一个构建单元进行编译的描述文件;
执行单元,用于按照设定的执行时间,调取并执行所述描述文件。
8.根据权利要求5至7中任一项所述的用于持续集成的自动化编译装置,其特征在于,还包括:
显示单元,用于根据所述每个构建单元的依赖关系集,以树形结构显示所述至少一个构建单元内的组件之间的依赖关系,以及
在接收到显示指定组件的依赖情况的指令时,显示所述指定组件依赖的其他组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410318900.0A CN104077140B (zh) | 2014-07-04 | 2014-07-04 | 用于持续集成的自动化编译方法和编译装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410318900.0A CN104077140B (zh) | 2014-07-04 | 2014-07-04 | 用于持续集成的自动化编译方法和编译装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077140A CN104077140A (zh) | 2014-10-01 |
CN104077140B true CN104077140B (zh) | 2017-11-07 |
Family
ID=51598411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410318900.0A Active CN104077140B (zh) | 2014-07-04 | 2014-07-04 | 用于持续集成的自动化编译方法和编译装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077140B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786691B (zh) * | 2014-12-25 | 2023-05-12 | 锐迪科(重庆)微电子科技有限公司 | 一种移动终端自动化集成测试装置、方法和系统 |
CN104866369B (zh) * | 2015-05-22 | 2018-05-08 | 广州华多网络科技有限公司 | 一种数据处理的方法以及装置 |
CN104915214B (zh) * | 2015-06-25 | 2018-09-07 | 走遍世界(北京)信息技术有限公司 | 系统的发布方法及装置 |
CN104965760B (zh) * | 2015-06-29 | 2018-12-21 | 广州酷狗计算机科技有限公司 | 一种管理软件功能模块生命周期的方法和装置 |
CN106407101B (zh) * | 2015-07-31 | 2021-04-30 | 三亚中兴软件有限责任公司 | 基于lxc的持续集成方法及装置 |
CN106484606B (zh) * | 2015-09-01 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种代码提交方法和设备 |
CN106557308B (zh) * | 2015-09-29 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 一种软件持续集成方法及装置 |
CN106933736B (zh) * | 2015-12-31 | 2020-04-21 | 中移(苏州)软件技术有限公司 | 一种项目持续集成的方法和系统 |
CN108304189B (zh) * | 2016-08-29 | 2021-03-12 | 迈普通信技术股份有限公司 | 多镜像设备软件编译方法、装置及设备 |
TWI735511B (zh) * | 2017-01-19 | 2021-08-11 | 香港商斑馬智行網絡(香港)有限公司 | 代碼提交方法和設備 |
CN107193622B (zh) * | 2017-05-16 | 2020-03-17 | 北京小米移动软件有限公司 | 代码编译的处理方法、装置及终端 |
CN109240698B (zh) * | 2017-06-08 | 2021-11-23 | 中国移动通信集团浙江有限公司 | 一种增量编译处理方法及装置 |
CN107632829A (zh) * | 2017-08-03 | 2018-01-26 | 大唐网络有限公司 | 一种基于iOS系统下的App自动化持续集成系统及方法 |
CN107491329B (zh) * | 2017-08-04 | 2021-03-16 | 上海携程商务有限公司 | Docker镜像构建方法、设备、存储介质以及电子装置 |
CN107729017B (zh) * | 2017-10-12 | 2021-02-02 | 北京元心科技有限公司 | 编译方法、装置及设备 |
CN107832057A (zh) * | 2017-10-31 | 2018-03-23 | 福建天泉教育科技有限公司 | 一种iOS应用的构建方法及终端 |
CN108334313A (zh) * | 2017-12-27 | 2018-07-27 | 苏州中晟宏芯信息科技有限公司 | 用于大型soc研发的持续集成方法、装置及代码管理系统 |
CN108255493B (zh) * | 2018-01-09 | 2021-04-23 | 武汉斗鱼网络科技有限公司 | 组件发布与编译方法、存储介质、电子设备及系统 |
CN109491661B (zh) * | 2018-10-24 | 2022-06-24 | 武汉思普崚技术有限公司 | 通用交叉编译方法及设备 |
CN110119283B (zh) * | 2019-05-15 | 2023-04-21 | 浪潮通用软件有限公司 | 一种应用更新处理方法、装置及系统、应用更新系统 |
CN110764776A (zh) * | 2019-09-24 | 2020-02-07 | 中信百信银行股份有限公司 | 依赖组件管控方法和装置 |
CN111338686A (zh) * | 2020-02-12 | 2020-06-26 | 中国平安人寿保险股份有限公司 | 一种软件构建方法、设备、服务器及可读存储介质 |
CN111782183B (zh) * | 2020-06-29 | 2024-03-01 | 北京百度网讯科技有限公司 | 用于判断组件依赖关系的方法及设备、电子设备和介质 |
CN111967017B (zh) * | 2020-07-28 | 2023-06-02 | 深圳开源互联网安全技术有限公司 | 生成依赖关系的方法、装置、终端设备及存储介质 |
CN112214221B (zh) * | 2020-10-10 | 2023-04-28 | 上海上讯信息技术股份有限公司 | 一种用于Linux系统构建的方法与设备 |
CN112394949B (zh) * | 2020-12-03 | 2022-04-22 | 中国科学院软件研究所 | 一种面向持续集成的服务版本动态配置方法 |
CN113076129B (zh) * | 2021-03-23 | 2023-11-28 | 成都安恒信息技术有限公司 | 一种复杂配置依赖关系自动检查处理方法 |
CN116088863B (zh) * | 2023-04-04 | 2023-09-26 | 阿里云计算有限公司 | 故障定位方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937353A (zh) * | 2010-09-20 | 2011-01-05 | 中兴通讯股份有限公司 | 一种插件部署和加载的方法及装置 |
CN102109991A (zh) * | 2010-07-30 | 2011-06-29 | 兰雨晴 | 软件包依赖关系建模方法 |
CN103020075A (zh) * | 2011-09-23 | 2013-04-03 | 启碁科技股份有限公司 | 分析目标对象的依赖关系的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4884297B2 (ja) * | 2006-05-26 | 2012-02-29 | パナソニック株式会社 | コンパイラ装置、コンパイル方法およびコンパイラプログラム |
CN103729184B (zh) * | 2013-12-29 | 2017-05-17 | 国云科技股份有限公司 | 一种软件组件组合构建方法 |
-
2014
- 2014-07-04 CN CN201410318900.0A patent/CN104077140B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102109991A (zh) * | 2010-07-30 | 2011-06-29 | 兰雨晴 | 软件包依赖关系建模方法 |
CN101937353A (zh) * | 2010-09-20 | 2011-01-05 | 中兴通讯股份有限公司 | 一种插件部署和加载的方法及装置 |
CN103020075A (zh) * | 2011-09-23 | 2013-04-03 | 启碁科技股份有限公司 | 分析目标对象的依赖关系的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104077140A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077140B (zh) | 用于持续集成的自动化编译方法和编译装置 | |
Theiler et al. | IFC Monitor–An IFC schema extension for modeling structural health monitoring systems | |
Gurbuz et al. | Model-based testing for software safety: a systematic mapping study | |
CN111399853B (zh) | 机器学习模型与自定义算子的模板化部署方法 | |
EP2141599B1 (en) | Redundant error detection in a clinical diagnostic analyzer | |
CN110046099A (zh) | 智能化软件测试系统及方法 | |
US9304893B1 (en) | Integrated software development and test case management system | |
JP2010014711A5 (zh) | ||
CN106529304B (zh) | 一种安卓应用并发漏洞检测系统 | |
KR102269286B1 (ko) | 어노테이션 자동 진단 시스템 | |
CN103870382A (zh) | 一种代码风险的检测方法及装置 | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
Chowdhury et al. | CyFuzz: A differential testing framework for cyber-physical systems development environments | |
CN101008915A (zh) | 网络芯片的自动化验证方法 | |
Cooper et al. | 1.6. 2 formalizing a structured natural language requirements specification notation | |
US20190303279A1 (en) | Modeling system | |
CN100428243C (zh) | 用于在模型上实现动作的方法和系统 | |
Islam et al. | Code smell prioritization with business process mining and static code analysis: A case study | |
JP2007535013A (ja) | コンピュータプログラムの設計 | |
Abid et al. | A Real-Time Specification Patterns Language | |
CN109446718B (zh) | 一种保护装置和控制装置的可视化开发方法及系统 | |
Ichii et al. | A rule-based automated approach for extracting models from source code | |
US8949167B2 (en) | Method and device for the quality analysis of system models | |
CN112988120B (zh) | Ada语言用卫星遥测下行调度参数动态在线装订方法及系统 | |
KR102106696B1 (ko) | 소프트웨어 검사 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100094 Haidian District North Road, Beijing, No. 68 Applicant after: Yonyou Network Technology Co., Ltd. Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Applicant before: UFIDA Software Co., Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |