工程构建系统及其构建方法

文档序号:10534485阅读:1111来源:国知局
工程构建系统及其构建方法
【专利摘要】本发明实施例提供了一种工程构建系统及其构建方法。该系统包括:多个工程模块,用于提供工程的公共配置、容器、工具并对工程进行抽象描述;技术组件模块,用于为多个工程模块提供多个插件以及各个插件间的依赖关系;工程/技术组件的父模块,用于为技术组件模块提供多个插件的插件源以及为多个工程模块和技术组件模块提供继承服务;依赖管理模块,用于管理多个依赖关系,以解除冲突;框架根模块,用于搭建框架,并对上述各个模块进行管理。本实施方式具有丰富的功能模块,可以为生成级别的多个工程项目提供框架,加快了开发的速度,解决了依赖冲突,规范了编程,减少程序的错误,提高代码的复用率,提高了系统的稳定性。
【专利说明】
工程构建系统及其构建方法
技术领域
[0001] 本发明实施例涉及软件工程技术领域,尤其涉及一种工程构建系统及其构建方 法。
【背景技术】
[0002] 随着高级的面向对象的程序设计语言的快速发展,使用这类高级语言可以编写各 种类型的应用程序,例如:桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序 等。这些应用程序正呈现出向大型化和复杂化的发展趋势。例如,基于Java语言开发的工程 项目可以达到10万至20万行的代码。因此,每开发构建一个工程项目,需要耗费大量的人 力、资金和时间。而耗费大量的人力、资金和时间构建的工程,却不能复用。如果开发其它的 工程项目,则需要重新编写所有的代码,造成了大量的人力、资金和时间的浪费,且新构建 的工程质量依赖开发者的知识水平。因此,现有技术中,可能会出现工程项目编码不规范, 工程项目质量不稳定的情况。
[0003] 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件 实例间交互的方法。曾经,有开发者试图利用现有的框架进行开发新的项目,但利用现有的 框架会出现如下的问题:功能单一,仅针对实现基本功能的小型项目的设计,无法满足针对 生产级别的多功能的工程的构建;无法解决依赖的冲突关系,使得构建的项目实用性不强。
[0004] 因此,如何快速构建高质量的工程系统,以成为业界的关注点之一。

【发明内容】

[0005] 本发明实施例提供了一种工程构建系统及其方法,用以解决现有技术中功能单 一,设计简单,无法满足针对生产级别的多功能的工程的构建;无法解决依赖的冲突关系, 构建的项目实用性不强等问题。
[0006] 本发明实施例提供了一种工程构建系统。该系统包括:
[0007] 多个工程模块,用于提供工程的公共配置、容器、工具并对所述工程进行抽象描 述;
[0008] 技术组件模块,用于为所述多个工程模块提供多个插件以及各个插件间的依赖关 系;
[0009] 工程/技术组件的父模块,用于为所述技术组件模块提供所述多个插件的插件源 以及为所述多个工程模块和技术组件模块提供继承服务;
[0010] 依赖管理模块,用于管理多个依赖关系,以确保所述技术组件模块提供给所述多 个工程模块的插件间的依赖关系不发生冲突;
[0011] 框架根模块,用于搭建框架,并对所述多个工程模块、技术组件模块、工程/技术组 件的父模块和依赖管理模块进行管理。
[0012] 本发明实施例提供了一种工程构建系统的构建方法。该方法包括:
[0013] 构建用于搭建框架的框架根模块;
[0014] 在所述框架根模块上构建依赖管理模块;
[0015] 在所述依赖管理模块上构建工程/技术组件的父模块;
[0016] 在所述工程/技术组件的父模块上构建技术组件模块和多个工程模块;
[0017] 其中,所述多个工程模块用于提供工程的公共配置、容器、工具并对所述工程进行 抽象描述;
[0018] 所述技术组件模块用于为所述多个工程模块提供多个插件以及各个插件间的依 赖关系;
[0019] 所述工程/技术组件的父模块用于为所述技术组件模块提供所述多个插件的插件 源以及为所述多个工程模块和技术组件模块提供继承服务;
[0020] 所述依赖管理模块用于管理多个依赖关系,以确保所述技术组件模块提供给所述 多个工程模块的插件间的依赖关系不发生冲突;
[0021] 所述框架根模块用于对所述多个工程模块、技术组件模块、工程/技术组件的父模 块和依赖管理模块进行管理。
[0022] 基于本实施方式构建好的系统,开发人员可以非常方便、快捷的选取已经配置好 的项目所需的插件、工具、容器,对其进行自由组合,并对其中的依赖关系进行管理,从而快 速开发各种网站项目或者服务项目,解除各个依赖关系冲突的问题,而无需重新编制网站 项目或者服务项目中的代码程序。
[0023] -来,本实施方式通过设置丰富的功能模块,并集中对各个功能模块进行管理,可 以为生成级别的多个工程项目提供框架,加快工程项目开发的速度;
[0024] 二来,本实施方式通过构建工程系统可以规范编程,减少程序的错误率,提高代码 的复用率;
[0025]三来,本实施方式通过设置依赖管理模块,能够解决程序中的依赖冲突,提高了系 统的稳定性,便于后期维护。
【附图说明】
[0026] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用 的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027] 图1为本发明工程构建系统的第一实施例的结构示意图;
[0028] 图2为本发明工程构建系统的第二实施例的结构示意图;
[0029] 图3为本发明一实施方式的工程构建系统的构建方法流程示意图;
[0030] 图4为图3实施例的子流程示意图;
[0031] 图5为本发明工程构建系统的每秒查询次数的性能指标示意图;
[0032]图6为本发明工程构建系统的99%情况下的响应时间的性能指标示意图。
【具体实施方式】
[0033]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034] 图1为本发明工程构建系统的第一实施例的结构示意图。如图1所示,工程构建系 统包括:多个工程模块、技术组件模块、工程/技术组件的父模块、依赖管理模块和框架根模 块。其中:
[0035] 在本实施方式中,多个工程模块用于提供工程的公共配置、容器、工具并对所述工 程进行抽象描述。多个工程模块例如可以是网站工程模块,也可以是服务工程模块,还可以 按实际需求进行个性化设计。
[0036] 在本实施方式中,技术组件模块用于为所述多个工程模块提供多个插件以及各个 插件间的依赖关系,还可以对所述多个插件进行配置。在本发明实施例中,技术组件模块可 以包括 metrics、couchbase、dubbo、mybatis、swiftmq 和 dozer组件模块中的至少一种,还可 以按需求进行组合配置,或者添加新的组件模块。
[0037] 由此,本实施方式通过添加丰富的插件可以实现丰富的技术功能,保证生产级别 的程序的有效实现。
[0038] 在本实施方式中,工程/技术组件的父模块是上述多个工程模块和技术组件模块 的父模块。工程/技术组件的父模块用于为所述技术组件模块提供所述多个插件的插件源 以及为所述多个工程模块和技术组件模块提供继承服务。
[0039]在本实施方式中,依赖管理模块用于管理多个依赖关系,以确保所述技术组件模 块提供给所述多个工程模块的插件间的依赖关系不发生冲突。
[0040]在本实施方式中,框架根模块用于搭建框架,并对所述多个工程模块、技术组件模 块、工程/技术组件的父模块和依赖管理模块进行管理。
[0041 ] -来,本实施方式通过设置丰富的功能模块,并集中对各个功能模块进行管理,可 以为生成级别的多个工程项目提供框架,加快工程项目开发的速度;
[0042]二来,本实施方式通过构建工程系统可以规范编程,减少程序的错误率,提高代码 的复用率;
[0043]三来,本实施方式通过设置依赖管理模块,能够解决程序中的依赖冲突,提高了系 统的稳定性,便于后期维护。
[0044]在本发明实施例中,所述工程构建系统基于spring-boot框架构建工程,自动配置 spring-boot框架中的参数。
[0045] 本实施方式基于spring-boot框架进行开发,可以自动配置spring-boot框架中的 参数,无需xml配置文件专门为其进行配置。本实施方式可以与spring-boot框架的各个组 件很好的结合起来,使得熟悉spring技术的使用者能够迅速掌握本实施方式的框架,提高 了程序开发的速度。
[0046] 图2为本发明工程构建系统的第二实施例的结构示意图。如图2所示,工程构建系 统包括:网站工程模块、服务工程模块、通用工程模块、技术组件模块、工程/技术组件的父 模块、依赖管理模块和框架根模块。本实施例中与图1所示的第一实施例相同部分不再赘 述,在此着重说明二者不一致之处。
[0047] 在本实施例中,依赖管理模块可以包括:依赖关系参考单元、依赖冲突解析单元和 依赖冲突解决单元。其中:
[0048] 依赖关系参考单元用于提供参考的依赖关系。
[0049] 依赖冲突解析单元用于解析所述参考的依赖关系间互相冲突的可能性。
[0050] 依赖冲突解决单元用于根据所述可能性删除和/或修改所述参考的依赖关系。
[0051 ]例如,有三个插件(或者项目),具有有依赖关系A、B和C。其中,A包括1.0的旧版本 和2.0的新版本,且1.0旧版本和2.0新版本的依赖关系不兼容,形成冲突。B依赖1.0的旧版 本的AX依赖B和2.0的新版本的A。由于依赖关系的传递性,C可能会依赖1.0的旧版本和2.0 的新版本的A,因此,会形成冲突。
[0052] 参考的依赖关系提供有各个依赖关系的版本情况。此时,根据参考的依赖关系可 知,A的1.0版本属于旧版本,A的2.0版本属于新版本,将A的1.0旧版本删除,或者将A的1.0 旧版本更换为与2.0版本相兼容的其它版本,就可以解决冲突的依赖关系。
[0053] 由此,本实施方式可以解决冲突,提高了系统的稳定性,便于后期维护。
[0054] 本发明实施例中可以通过硬件处理器(hardware processor)和各单元来实现相 关功能t吴块的各项功能。
[0055] 在本实施例中,网站工程模块和服务工程模块可以由通用工程模块和由所述通用 工程模块衍生而成。其中,
[0056] 通用工程模块用于提供通用工程的公共配置、容器、工具,并通过代码程序对所述 通用工程进行抽象描述。
[0057] 网站工程模块用于提供网站工程的公共配置、容器、工具,并通过代码程序对所述 网站工程进行抽象描述。
[0058] 服务工程模块用于提供服务工程的公共配置、容器、工具,并通过代码程序对所述 服务工程进行抽象描述。
[0059] -来,本实施方式通过设置多个工程模块可以满足不同类型的工程需求;
[0060] 二来,本实施方式通过在通用工程模块的基础上的衍生其它工程模块,提高了代 码复用率,减少了代码程序的编制量。
[0061 ]三来,本实施方式通过与内嵌式容器和外置容器相组合,可以方便解除耦合,使得 信息交互不受语言和系统的限制,提高了系统的兼容性。
[0062]下面例举三个实施例来具体说明工程模块实现的方式。
[0063] 第一实施例:
[0064] 该实施例展示了使用网站工程模块(stone-application-web)和外置容器模块构 建web工程的代码实现方式。该方式方便了本实施方式的使用者基于tomcat等外置容器进 行网站的快速开发。具体代码如下所示:
[0065] " dependencies > <dependenf.y';- ^'groupId.:= cdst:, Iscloud < vod, stone< /'gr〇ypId> <srf if 3ttId>stone-ext: f'nsl-ccsntsiner.i'./artifact I.dl> ^/dep?ndency> <dependency.> <group!d> javax, ssrvlst</ groupld:-if set Id arti fa?: tld、> </depem1enc.y> <d:ependsncy> <groupld>ca^, lecioud > v〇d,stone^ ,',g.roupi'u> < s r t i f s f 1.1 ti > s t e> k e b..沿〇 d u 1 ?M / a rt i f a ct I d dependency v xdeperideriii:y> <gr〇ypld>〇rg, springfrasr^ivark, ba::t</groupId ' ^artifactId>sprin|-bQ〇t-5tarter-test,/artifactId> < s c. ope > t e s t < / s ccs pe > </dependency> < / ilepe^dec. i es > cbuilid> ::plug.i.ns. <plyiiri:> groupld;:org, ^.pringfrsn^iisorK, bocvi;<';groupld ; < sri; i fact. Id V5p;.'i ng- bcot - ?r:sv. en - plugin ./ art i_ <;piygin> v-'p logins: build > package cool.leclsud?,stone?samples; iipsrt c:〇i.£leclsud?¥〇^,stone ,<application,l.b:stractExternalSs:r¥e:rAppli£ati0n; iiport Grg.springfra^warLboot.SpringApplication; iiport erg.springframewark,context,annotation.Cc-f^ponentScan; if-rt GrgtspringframeworLcontext,annotatkmConfiguration^
[0066] (^Configuration (^),ComponentScan(value-{ihcom.leck)ud.vod.stone,?}) Public class SamplcApplicaiion extends AbstactExtcrnalScrvcrApplication <SampleApplication> { Private static final Class <SampleApplication> sampleApplicationClass = SampIcApplication.class; @〇¥erride Protected Class<SampleAppIication >getApplicationType(){ return sampleApplicationClass: } Public static void main (string [] args) { SpnngApplication.run(SampleApplication, args) } }
[0067] 第二实施例:
[0068] 该实施例展示了服务工程模块(stone-application-service)和内置tomcat容器 模块构建service工程,方便了本发明的使用者快速获取底层(例如框架根)服务。具体代码 如下所示: ^dependencies > 《dependency〉 <gr〇L3pId>co:sT5., lecloud, vod , stone</groupl-d> < a r t i f a c t I-d > st on e - e:!i5bed d ed - tome a t < / a rt if act < /-dependency > <dependency〉 <f , springf ^ boot < /§ r〇ypI<l> < scope>test4/sc<ipe> < i es >
[0070]
[0071] 第三实施例:
[0072] 该实施例展示了服务工程模块(stone-appli cat ion-service)和外置容器模块构 建service工程,方便了本发明的使用者快速获取底层(例如框架根)服务。具体代码如下所 示:
[0073] < pgcfe agi pg:>wsr < /pack ^gin:g> Cdepe ies > <-d:ep^eridenicy> <groupld>com,lecloud*vsd.stone</grou pld > iartif actId>stone-externial-c£mtainer</artif'actI<i> </d:ependency> <de|>endency> <.g:roupId>CD;mx le cloud :, y〇d, stcns, samples</graupld> cart i f a c t M^st-one- ser vice- ^c-d ule</artifactld> 〈/dependency> <depen^;ency > <gr〇yp|jdt>or:g;. spr i n^fr^meimrk * boot gr〇yp!d:> <afrtifa;ctld>spring- boat- starter-teiit s/etrtifactia> < s c^pe>t e st i/s cope > < /depeBd;en:cy> </-dependeficies> <:build> <ply;gips> <plugiii;> <gr〇wpld:>org., springfra:me^ork ?boot</groupld> (artif act:Id>spring-- b:oot-爪aven - plLjgirK/ijrliifacliId::^ </plugln> </plugins> <7 build > package coiJecloud^od.stoneiSaiples; iiport coifs.lecloyd^^.stone.spplicatl^nJbstrsctExternslServe i^prt org,springfraie^orfc. boot .SpririgApplication j import org,s pringfraieworfe,context,an n^tation * toponentSc m^ mpQrt wg, s pringfra?Gffe> cont ext, a n ndt atisn > Configu rat im} (^Configuiation @C〇iti|)〇nentScan (^alus = {^ca^.lecloud, vsd.stens5'}) :pbli.c cl3ss S^iplelpplicitia^ miiMs. A&stractE)d:er^I,Sfr¥€rAppIic:stM^:<S^pleAppli:cat^i^^^ {
[0074] primti static fiml Class<SafpleAppli£:itisri> saiple^pplicaticfnCiass = SafpleA^licatiGn^dass; @Ovemde protects Clas5<5ampleApplicatisn> get#plicstki'fype() { retrn sanspleApplicatianClass; public static wU ^ii?(St^in|[j args) { SpringftpplicatiQn,run(saa5pleAppdicatkrtQass, a:rgs)] } }
[0075]图3为本发明工程构建系统的构建方法流程示意图。如图3所示,该方法包括:
[0076] S301:构建用于管理工程构建系统的框架根模块。
[0077] S302:在框架根模块上构建依赖管理模块。
[0078] S303:在依赖管理模块上构建工程/技术组件的父模块。
[0079] S304:在所述工程/技术组件的父模块上构建技术组件模块和多个工程模块。
[0080] 在本发明实施例中,所述多个工程模块用于提供工程的公共配置、容器、工具并对 所述工程进行抽象描述。
[0081] 所述技术组件模块用于为所述多个工程模块提供多个插件以及各个插件间的依 赖关系。
[0082] 所述工程/技术组件的父模块用于为所述技术组件模块提供所述多个插件的插件 源以及为所述多个工程模块和技术组件模块提供继承服务。
[0083]所述依赖管理模块用于管理多个依赖关系,以确保所述技术组件模块提供给所述 多个工程模块的插件间的依赖关系不发生冲突。
[0084] 所述框架根模块用于对所述多个工程模块、技术组件模块、工程/技术组件的父模 块和依赖管理模块进行管理。
[0085] -来,本实施方式通过设置多个工程模块可以满足不同类型的工程需求;
[0086] 二来,本实施方式通过在通用工程模块的基础上的衍生其它工程模块,提高了代 码复用率,减少了代码程序的编制量。
[0087] 三来,本实施方式通过与内嵌式容器和外置容器相组合,可以方便解除耦合,使得 信息交互不受语言和系统的限制,提高了系统的兼容性。
[0088] 在本发明实施例中,所述多个工程模块包括:通用工程模块和由所述通用工程模 块衍生而成的网站工程模块和服务工程模块,其中,
[0089] 所述通用工程模块用于提供通用工程的公共配置、容器、工具,并通过代码程序 (例如用Java语言的代码程序)对所述通用工程进行抽象描述。
[0090] 所述网站工程模块用于提供网站工程的公共配置、容器、工具,并通过代码程序对 所述网站工程进行抽象描述。
[0091] 所述服务工程模块用于提供服务工程的公共配置、容器、工具,并通过代码程序对 所述服务工程进行抽象描述。
[0092]在本发明实施例中,所述构建用于搭建框架的框架根模块包括构建用于搭建 spring-boot框架的框架根模块。自动配置spring-boot框架中的参数。
[0093] 本实施方式基于spring-boot框架进行开发,可以自动配置spring-boot框架中的 参数,无需xml配置文件专门为其进行配置。本实施方式可以与spring-boot框架的各个组 件很好的结合起来,使得熟悉spring技术的使用者能够迅速掌握本实施方式的框架,提高 了程序开发的速度。
[0094] 在本发明实施例中,所述技术组件模块包括metrics、couchbase、dubbo、mybatis、 swiftmq和dozer插件中的至少一种,还可以按需求进行组合配置,或者添加新的组件模块。
[0095] 由此,本实施方式通过添加丰富的插件可以实现丰富的技术功能,保证生产级别 的程序的有效实现。
[0096] 图4为图3实施例的子流程示意图。如图4所示,图3中步骤S302(即在所述框架根模 块上构建依赖管理模块包括)可以包括:
[0097] S3021:在所述框架根模块上构建用于提供参考的依赖关系的依赖关系参考单元。
[0098] S3022:在所述框架根模块上构建用于解析所述参考的依赖关系间互相冲突的可 能性的依赖冲突解析单元。
[0099] S3023:在所述框架根模块上构建用于根据所述可能性删除和/或修改所述参考的 依赖关系的依赖冲突解决单元。
[0100] 利用所述依赖关系参考单元、所述依赖冲突解析单元、所述依赖冲突解决单元构 成依赖管理模块。
[0101] 由此,本实施方式可以解决冲突,提高了系统的稳定性,便于后期维护。
[0102] 下面对本实施方式的工程构建系统进行压力测试,获取详细数据见下表格(为了 说理简单且效果鲜明,本实施方式中表格省略了单位):

[0104] 表格
[0105] 其中:
[0106] Concurrency为并发请求数量(即并发数)。
[0107] QPS为每秒请求数量。
[0108] TP99为99 %情况下的响应时间。
[0109] Memory为Java虚拟机内存大小。
[0110] GC为Java虚拟机类型。
[0111 ] Requests为压力测试每次请求数量。
[0112] 根据上述表格可以获取基于本系统的简单服务的性能指标:每秒查询次数(QPS) 和99 %情况下的响应时间(TP99)。
[0113] 图5为本发明工程构建系统的每秒查询次数的性能指标示意图。其中,曲线代表每 秒查询次数(QPS),横轴代表压力测试的并发数(Concurrency),纵轴代表对应的服务响应 数量。如图5所示,当Concurrency从20变化为1500时,QPS从6992变化为13552。随着 Concurrency的逐步变大,QPS的变化趋于平缓。由此可知,本实施方式每秒查询次数的性能 非常优秀,数据处理的速度非常快,比现有技术有了较大的进步。
[0114] 图6为本发明工程构建系统的99%情况下的响应时间的性能指标示意图。其中,曲 线代表99%情况下的响应时间(TP99),横轴为压力测试的并发数(Concurrency),纵轴为对 应的服务响应时间。如图6所示,当Concurrency从20变化为1300时,TP99从6变化为254,此 时,TP99的变化趋势比较平缓;当Concurrency超过1300时,TP99发生了快速增长的变化。当 Concurrency从1300变化为1500时,TP99从254变化为1083。由此可知,本实施方式每秒查询 次数和99 %情况下的响应时间这个性能非常优秀,在Concurrency正常的情况下 (Concurrency小于1300时),TP99响应时间非常短,比现有技术有了较大的进步。
[0115] 由此,本实施方式具有以下优点:可以提供生产级别的解决方案;易于构建web和 service工程;丰富的技术栈;内嵌式tomcat、jetty和外置容器支持;自动配置spring,无需 xml配置文件;提供生产可用的组件。
[0116] 本实施方式中的各个模块还可以是:
[0117] stone-root模块,用于负责管理框架中的模块。
[0118] stone-dependencies模块,用于负责依赖管理,解决依赖冲突。
[0119] stone-parent模块,用于继承自stone-dependencies,管理插件配置,子模块和业 务系统继承stone-parent 〇
[0120] stone-components模块,包含各个技术组件的依赖和配置管理。
[0121] stone-application模块,负责作为一般工程的抽象,包含了工程的公共配置、内 置容器、外置容器启动工具类。
[0122] stone-appli cat ion-web 模块,从s tone-application 基础上衍生为 web工程提供 公共配置,与外置、内嵌容器组合使用。
[0123] s tone-appli cat ion-service模块,从stone-appli cat ion 基础上衍生为service 工程提供公共配置,与内嵌的tomcat、jetty和外置容器自由组合。
[0124] 本实施方式的具体实现方式可以是:
[0125] 步骤1、经过技术选型,确定本框架基于spring-boot进行构建。
[0126] 更具体为调研并比较了 spring-boot和dropwizard框架,鉴于spring-boot作为 spring生态的一部分,与spring的各个组件能很好地结合起来;基于spring-boot进行开发 有利于降低框架使用者的学习成本,真正做到快速开发。
[0127] 步骤2、研究确定本框架的各个模块及其功能。
[0128] 更具体为根据以往的工作经验积累,初步确定了基本的框架组成,然后对各个组 件进行精简合并,直到确定最终的架构。
[0129] 步骤3、创建构成本框架的基本模块。
[0130] 更具体为搭建框架的工程,添加stone-dependenc ies、stone-parent、stone-appli cat ion、 stone-appli cat ion-web、 stone-appli cat ion-service 和stone-components 等模块。
[0131 ] 步骤4、在stone-components模块中添加各种技术组件。
[0132] 更具体为添加11161:1';[。8、。011。1^&86、(11113130、1115^&1:18、8¥1;1^1:11^和(10261'等技术组件 丰旲块。
[0133] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单 元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可以理解并实施。
[0134] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上 述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该 计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指 令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施 例或者实施例的某些部分所述的方法。
[0135] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可 以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换; 而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和 范围。
【主权项】
1. 一种工程构建系统,包括: 多个工程模块,用于提供工程的公共配置、容器、工具并对所述工程进行抽象描述; 技术组件模块,用于为所述多个工程模块提供多个插件以及各个插件间的依赖关系; 工程/技术组件的父模块,用于为所述技术组件模块提供所述多个插件的插件源以及 为所述多个工程模块和技术组件模块提供继承服务; 依赖管理模块,用于管理多个依赖关系,以确保所述技术组件模块提供给所述多个工 程模块的插件间的依赖关系不发生冲突; 框架根模块,用于搭建框架,并对所述多个工程模块、技术组件模块、工程/技术组件的 父模块和依赖管理模块进行管理。2. 根据权利要求1述的系统,所述依赖管理模块包括: 依赖关系参考单元,用于提供参考的依赖关系; 依赖冲突解析单元,用于解析所述参考的依赖关系间互相冲突的可能性; 依赖冲突解决单元,用于根据所述可能性删除和/或修改所述参考的依赖关系。3. 根据权利要求1述的系统,所述多个工程模块包括:通用工程模块、网站工程模块或 服务工程模块。4. 根据权利要求1-3中任一项所述的系统,所述技术组件模块包括metrics、 couchbase、dubbo、mybat is、swif tmq 和 dozer 组件模块中的至少一种。5. 根据权利要求1-3任一项所述的系统,所述框架根模块搭建的框架为基于spring-boot 的框架。6. -种工程构建系统的构建方法,包括: 构建用于搭建框架的框架根模块; 在所述框架根模块上构建依赖管理模块; 在所述依赖管理模块上构建工程/技术组件的父模块; 在所述工程/技术组件的父模块上构建技术组件模块和多个工程模块; 其中,所述多个工程模块用于提供工程的公共配置、容器、工具并对所述工程进行抽象 描述; 所述技术组件模块用于为所述多个工程模块提供多个插件以及各个插件间的依赖关 系; 所述工程/技术组件的父模块用于为所述技术组件模块提供所述多个插件的插件源以 及为所述多个工程模块和技术组件模块提供继承服务; 所述依赖管理模块用于管理多个依赖关系,以确保所述技术组件模块提供给所述多个 工程模块的插件间的依赖关系不发生冲突; 所述框架根模块用于对所述多个工程模块、技术组件模块、工程/技术组件的父模块和 依赖管理模块进行管理。7. 根据权利要求6所述的方法,在所述框架根模块上构建依赖管理模块包括在所述框 架根模块上: 构建用于提供参考的依赖关系的依赖关系参考单元; 构建用于解析所述参考的依赖关系间互相冲突的可能性的依赖冲突解析单元; 构建用于根据所述可能性删除和/或修改所述参考的依赖关系的依赖冲突解决单元; 利用所述依赖关系参考单元、所述依赖冲突解析单元、所述依赖冲突解决单元构成依 赖管理模块。8. 根据权利要求6所述的方法,所述多个工程模块包括:通用工程模块、网站工程模块 或服务工程模块。9. 根据权利要求6-8中任一项所述的方法,所述技术组件模块包括metrics、 couchbase、dubbo、mybat is、swif tmq 和 dozer 组件模块中的至少一种。10. 根据权利要求6-8中任一项所述的方法,所述构建用于搭建框架的框架根模块包括 构建用于搭建spring-boot框架的框架根模块。
【文档编号】G06F9/45GK105893013SQ201510888659
【公开日】2016年8月24日
【申请日】2015年12月7日
【发明人】牛庆华
【申请人】乐视云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1