工程構建系統及其構建方法
【專利摘要】本發明實施例提供了一種工程構建系統及其構建方法。該系統包括:多個工程模塊,用于提供工程的公共配置、容器、工具并對工程進行抽象描述;技術組件模塊,用于為多個工程模塊提供多個插件以及各個插件間的依賴關系;工程/技術組件的父模塊,用于為技術組件模塊提供多個插件的插件源以及為多個工程模塊和技術組件模塊提供繼承服務;依賴管理模塊,用于管理多個依賴關系,以解除沖突;框架根模塊,用于搭建框架,并對上述各個模塊進行管理。本實施方式具有豐富的功能模塊,可以為生成級別的多個工程項目提供框架,加快了開發的速度,解決了依賴沖突,規范了編程,減少程序的錯誤,提高代碼的復用率,提高了系統的穩定性。
【專利說明】
工程構建系統及其構建方法
技術領域
[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日
【發明人】牛慶華
【申請人】樂視云計算有限公司