CN111273943A - 应用文件的生成方法、装置及电子设备 - Google Patents
应用文件的生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111273943A CN111273943A CN201811477404.4A CN201811477404A CN111273943A CN 111273943 A CN111273943 A CN 111273943A CN 201811477404 A CN201811477404 A CN 201811477404A CN 111273943 A CN111273943 A CN 111273943A
- Authority
- CN
- China
- Prior art keywords
- sub
- module
- modules
- packaging
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000004806 packaging method and process Methods 0.000 claims abstract description 161
- 238000012856 packing Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 44
- 238000010276 construction Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 16
- 238000012360 testing method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000015654 memory Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/73—Program documentation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种应用文件的生成方法、装置及电子设备,其中,应用文件的生成方法包括:获取目标项目对应的多个子模块;为多个所述子模块新建打包模块;将多个所述子模块的源代码加载至所述打包模块;通过所述打包模块对多个所述子模块的源代码进行编译和打包,得到打包文件;基于所述打包文件生成所述目标项目的应用文件。本发说通过打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种应用文件的生成方法、装置及电子设备。
背景技术
目前,针对客户的多种产品需权,比较普遍的开发方式有两种,一种是每个模块作为一个独立的工程,独立开发,独立测试,独立部署;另一种是一个工程里有多个模块,所有模块的源代码放在一起,一起开发,一起测试,一起部署。第一种方式相对来说比较浪费资源,第二种方式很容易造成一个工程项目里充斥大量不相干的代码逻辑,在技术实现上也没有太多的可复用逻辑,难以维护。
发明内容
有鉴于此,本申请实施例提供一种应用文件的生成方法、装置及电子设备,可以为目标项目的多个子模块,也就是实现功能关联性较强的子模块,新建一个打包模块,并通过该打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
根据本申请的一个方面,提供一种电子设备,可以包括一个或多个存储介质和一个或多个与存储介质通信的处理器。一个或多个存储介质存储有处理器可执行的机器可读指令。当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行所述机器可读指令,以执行应用文件的生成方法中一个或多个方法。
根据本申请的另一个方面,提供一种应用文件的生成方法,所述方法应用于版本控制器,包括:获取目标项目对应的多个子模块;为多个所述子模块新建打包模块;将多个所述子模块的源代码加载至所述打包模块;通过所述打包模块对多个所述子模块的源代码进行编译和打包,得到打包文件;基于所述打包文件生成所述目标项目的应用文件。
在本申请较佳的实施例中,获取目标项目对应的多个子模块的步骤,包括:获取目标项目的功能需权信息;所述功能需权信息包括多个用以实现不同功能的子需权信息;从版本库中查找每个所述子需权信息对应的子模块;将查找到的子模块作为所述目标项目对应的多个子模块。
在本申请较佳的实施例中,获取目标项目对应的多个子模块的步骤,还包括:如果从版本库中未查找到所述子需权信息对应的子模块,提示为所述子需权信息新建子模块;接收并保存新建的所述子需权信息的子模块。
在本申请较佳的实施例中,为多个所述子模块新建打包模块的步骤,包括:应用Maven构建工具或Gradle构建工具,为多个所述子模块新建具有编译打包功能的打包模块。
在本申请较佳的实施例中,为多个所述子模块新建打包模块的步骤,包括:根据多个所述子模块的模块类别和/或模块大小,将多个所述子模块分组;为每组子模块均创建一个打包模块。
在本申请较佳的实施例中,将多个所述子模块的源代码加载至所述打包模块的步骤,包括:如果所述打包模块为一个,将所述目标项目对应的多个子模块的源代码均加载至所述打包模块;如果所述打包模块为多个,将每组子模块的源代码加载至对应的所述打包模块。
在本申请较佳的实施例中,将多个所述子模块的源代码加载至所述打包模块的步骤,包括:对于每个打包模块,均执行:获取所述打包模块对应的一组子模块;将所述一组子模块的源代码地址添加至所述打包模块的配置信息中,以使所述打包模块根据所述源代码地址下载所述一组子模块的源代码。
在本申请较佳的实施例中,通过所述打包模块对多个所述子模块的源代码进行编译和打包的步骤,包括:通过所述打包模块对所述子模块的源代码中的编译性代码进行编译,生成每个所述子模块对应的编译文件;将所述编译文件进行重复文件剔除处理;打包剔除处理后的所述编译文件。
在本申请较佳的实施例中,将所述编译文件进行重复文件剔除处理的步骤,包括;将所述编译文件中文件名相同的文件作为重复文件;保留所述重复文件中一个文件,删除所述重复文件中的其余文件。
在本申请较佳的实施例中,基于所述打包文件生成所述目标项目的应用文件的步骤,包括:如果所述打包文件为多个,对多个所述打包文件进行合并;将合并后的打包文件作为所述目标项目的应用文件。
在本申请较佳的实施例中,基于所述打包文件生成所述目标项目的应用文件的步骤,包括:如果所述打包文件为一个,将所述打包文件作为所述目标项目的应用文件。
在本申请较佳的实施例中,所述方法还包括:对所述应用文件进行测试。
根据本申请的另一个方面,提供一种应用文件的生成装置,所述装置应用于版本控制器,包括:子模块获取模块,用于获取目标项目对应的多个子模块;打包模块新建模块,用于为多个所述子模块新建打包模块;代码加载模块,用于将多个所述子模块的源代码加载至所述打包模块;编译打包模块,用于通过所述打包模块对多个所述子模块的源代码进行编译和打包,得到打包文件;应用文件生成模块,用于基于所述打包文件生成所述目标项目的应用文件。
在本申请较佳的实施例中,所述子模块获取模块还用于:获取目标项目的功能需权信息;所述功能需权信息包括多个用以实现不同功能的子需权信息;从版本库中查找每个所述子需权信息对应的子模块;将查找到的子模块作为所述目标项目对应的多个子模块。
在本申请较佳的实施例中,所述子模块获取模块还用于:如果从版本库中未查找到所述子需权信息对应的子模块,提示为所述子需权信息新建子模块;接收并保存新建的所述子需权信息的子模块。
在本申请较佳的实施例中,所述打包模块新建模块还用于:应用Maven构建工具或Gradle构建工具,为多个所述子模块新建具有编译打包功能的打包模块。
在本申请较佳的实施例中,所述打包模块新建模块还用于:根据多个所述子模块的模块类别和/或模块大小,将多个所述子模块分组;为每组子模块均创建一个打包模块。
在本申请较佳的实施例中,所述代码加载模块还用于:如果所述打包模块为一个,将所述目标项目对应的多个子模块的源代码均加载至所述打包模块;如果所述打包模块为多个,将每组子模块的源代码加载至对应的所述打包模块。
在本申请较佳的实施例中,所述代码加载模块还用于:对于每个打包模块,均执行:获取所述打包模块对应的一组子模块;将所述一组子模块的源代码地址添加至所述打包模块的配置信息中,以使所述打包模块根据所述源代码地址下载所述一组子模块的源代码。
在本申请较佳的实施例中,所述编译打包模块还用于:通过所述打包模块对所述子模块的源代码中的编译性代码进行编译,生成每个所述子模块对应的编译文件;将所述编译文件进行重复文件剔除处理;打包剔除处理后的所述编译文件。
在本申请较佳的实施例中,所述编译打包模块还用于:将所述编译文件中文件名相同的文件作为重复文件;保留所述重复文件中一个文件,删除所述重复文件中的其余文件。
在本申请较佳的实施例中,所述应用文件生成模块还用于:如果所述打包文件为多个,对多个所述打包文件进行合并;将合并后的打包文件作为所述目标项目的应用文件。
在本申请较佳的实施例中,所述应用文件生成模块还用于:如果所述打包文件为一个,将所述打包文件作为所述目标项目的应用文件。
在本申请较佳的实施例中,所述装置还包括:测试模块,用于对所述应用文件进行测试。
根据本申请的另一个方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任一所述的应用文件的生成方法的步骤。
在本发明实施例中,首先获取目标项目对应的多个子模块,然后为多个子模块新建打包模块;将多个子模块的源代码加载至打包模块;通过打包模块对多个子模块的源代码进行编译和打包,得到打包文件,最后基于打包文件生成目标项目的应用文件。本申请可以为目标项目的多个子模块,也就是实现功能关联性较强的子模块,新建一个打包模块,并通过该打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
为使本申请实施例的上述目的、特征和优点能更明显易懂,下面将结合实施例,并配合所附附图,作详细说明。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种应用文件的生成系统的框图;
图2示出了本申请实施例所提供的另一种应用文件的生成系统的框图;
图3示出了本申请实施例所提供的一种电子设备的结构示意图;
图4示出了本申请实施例所提供的一种应用文件的生成方法的流程图;
图5示出了本申请实施例所提供的另一种应用文件的生成方法的流程图;
图6示出了本申请实施例所提供的一种应用文件的生成方法中的一种子模块分组打包的示意图;
图7示出了本申请实施例所提供的一种应用文件的生成方法中的另一种子模块分组打包的示意图;
图8示出了本申请实施例所提供的一种应用文件的生成装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要权保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“网约车服务软件开发场景”,给出以下实施方式。对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。虽然本申请主要围绕网约车服务软件开发场景进行描述,但是应该理解,这仅是一个示例性实施例。本申请可以应用于任何其他项目开发过程中最终生成的应用文件中,充斥有大量不相关的代码逻辑的情形。例如,本申请可以应用于不同的外卖点餐软件开发场景、共享经济软件开发场景(如共享单车、共享充电桩、共享汽车)等。本申请的系统或方法的应用可以包括网页、浏览器的插件、客户端终端、定制系统、内部分析系统、或人工智能机器人等,或其任意组合。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
本申请的一个方面涉及一种应用文件的生成系统,该系统首先获取目标项目对应的多个子模块,然后为多个子模块新建打包模块;将多个子模块的源代码加载至打包模块;通过打包模块对多个子模块的源代码进行编译和打包,得到打包文件,最后基于打包文件生成目标项目的应用文件。本申请可以为目标项目的多个子模块,也就是实现功能关联性较强的子模块,新建一个打包模块,并通过该打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
值得注意的是,在本申请提出申请之前,针对客户的多种产品需权,比较普遍的开发方式有两种,一种是每个模块作为一个独立的工程,独立开发,独立测试,独立部署;另一种是一个工程里有多个模块,所有模块的源代码放在一起,一起开发,一起测试,一起部署。第一种方式相对来说比较浪费资源,第二种方式很容易造成一个工程项目里充斥大量不相干的代码逻辑,在技术实现上也没有太多的可复用逻辑,难以维护。
而本申请提供的应用文件的生成系统可以为目标项目的多个子模块,也就是实现功能关联性较强的子模块,新建一个打包模块,并通过该打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
图1是本申请实施例所提供的一种应用文件的生成系统100的框图。该应用文件的生成系统100可以是用于开发各种软件,诸如网络车服务软件、网购服务软件、外卖服务软件等的平台,其包括SVN版本控制器110、网络120、与其连接的多个用户终端130及版本库140。SVN版本控制器110能够执行本申请所提供一个或多个应用文件的生成方法。
SVN版本控制器110是一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过用户终端连到这台服务器,取出最新的文件或者提交更新。
SVN版本控制器110的特点概括起来主要有以下几条:
1)每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据;
2)获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据;
3)提交必须有网络连接(非本地版本库);
4)提交需要授权,如果没有写权限,提交会失败;
5)提交并非每次都能够成功。如果有其他人先于你提交,会提示“改动基于过时的版本,先更新再提交”诸如此类;
6)冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。
好处:每个人都可以一定程度上看到项目中的其他人正在做些什么,而管理员也可以轻松掌控每个开发者的权限。
若是宕机一小时,那么在这一小时内,谁都无法提交更新、还原、对比等,也就无法协同工作。如果中央服务器的磁盘发生故障,并且没做过备份或者备份得不够及时的话,还会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,被客户端提取出来的某些快照数据除外,但这样的话依然是个问题,不能保证所有的数据都已经有人提取出来。
简单来说,SVN原理上只关心文件内容的具体差异。每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。
在一些实施例中,SVN版本控制器110或用户终端210可以包括处理器。处理器可以处理与应用文件生成有关的信息和/或数据,以执行本申请中描述的一个或多个功能。例如,处理器可以基于开发人员的新建模块命令,新建子模块。在一些实施例中,处理器可以包括一个或多个处理核(例如,单核处理器(S)或多核处理器(S))。仅作为举例,处理器可以包括中央处理单元(Central Processor Unit,CPU)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、专用指令集处理器(Application SpecificInstruction-set Processor,ASIP)、图形处理单元(Graphics Processing Unit,GPU)、物理处理单元(Physics Processing Unit,PPU)、数字信号处理器(Digital SignalProcessor,DSP)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程逻辑器件(Programmable Logic Device,PLD)、控制器、微控制器单元、简化指令集计算机(Reduced Instruction Set Computing,RISC)、或微处理器等,或其任意组合。
网络120可以用于信息和/或数据的交换。在一些实施例中,应用文件的生成系统100中的一个或多个组件可以向其他组件发送信息和/或数据。例如,SVN集中式的版本控制器110可以经由网络120从用户终端130获取新建模块命令等。在一些实施例中,网络120可以是任何类型的有线或者无线网络,或者是他们的结合。仅作为示例,网络120可以包括有线网络、无线网络、光纤网络、远程通信网络、内联网、因特网、局域网(Local AreaNetwork,LAN)、广域网(Wide Area Network,WAN)、无线局域网(Wireless Local AreaNetworks,WLAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide AreaNetwork,WAN)、公共电话交换网(Public Switched Telephone Network,PSTN)、蓝牙网络、ZigBee网络、或近场通信(Near Field Communication,NFC)网络等,或其任意组合。在一些实施例中,网络120可以包括一个或多个网络接入点。例如,网络120可以包括有线或无线网络接入点,例如基站和/或网络交换节点。
在一些实施例中,用户终端130可以包括移动设备、平板计算机、膝上型计算机、或机动车辆中的内置设备等,或其任意组合。在一些实施例中,移动设备可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、或增强现实设备等,或其任意组合。
版本库140可以存储数据和/或指令。在一些实施例中,版本库140可以存储从用户终端130获得的数据。在一些实施例中,版本库140可以存储在本申请中描述的示例性方法的数据和/或模块。在一些实施例中,版本库140可以包括大容量存储器、可移动存储器、易失性读写存储器、或只读存储器(Read-Only Memory,ROM)等,或其任意组合。作为举例,大容量存储器可以包括磁盘、光盘、固态驱动器等;可移动存储器可包括闪存驱动器、软盘、光盘、存储卡、zip磁盘、磁带等;易失性读写存储器可以包括随机存取存储器(Random AccessMemory,RAM);RAM可以包括动态RAM(Dynamic Random Access Memory,DRAM),双倍数据速率同步动态RAM(Double Date-Rate Synchronous RAM,DDR SDRAM);静态RAM(StaticRandom-Access Memory,SRAM),晶闸管RAM(Thyristor-Based Random Access Memory,T-RAM)和零电容器RAM(Zero-RAM)等。作为举例,ROM可以包括掩模ROM(Mask Read-OnlyMemory,MROM)、可编程ROM(Programmable Read-Only Memory,PROM)、可擦除可编程ROM(Programmable Erasable Read-only Memory,PEROM)、电可擦除可编程ROM(ElectricallyErasable Programmable read only memory,EEPROM)、光盘ROM(CD-ROM)、以及数字通用磁盘ROM等。在一些实施例中,版本库140可以在云平台上实现。仅作为示例,云平台可以包括私有云、公有云、混合云、社区云、分布式云、跨云、多云或者其它类似的等,或其任意组合。
在一些实施例中,版本库140可以连接到网络120以与应用文件的生成系统100中的一个或多个组件通信。应用文件的生成系统100中的一个或多个组件可以经由网络120访问存储在版本库140中的数据或指令。
图2是本申请实施例所提供的另一种应用文件的生成系统200的框图。该系统采用Git分布式的版本控制系统,由多个用户终端210组成,多个用户终端210通过网络230连接。Git每一个用户终端210都是一个仓库,即每个用户终端都带有一个版本库220,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
Git记录版本历史只关心文件数据的整体是否发生变化。Git不保存文件内容前后变化的差异数据。
实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一连接。
在分布式版本控制系统中,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。这类系统都可以指定和若干不同的远端代码仓库进行交互。因此,可以在同一个项目中,分别和不同工作小组的人相互协作,并根据需要设定不同的协作流程。
另外,因为Git在本地磁盘上就保存着所有有关当前项目的历史更新,并且Git中的绝大多数操作都只需要访问本地文件和资源,不用连网,所以处理起来速度飞快。
Git特点:
1)Git中每个克隆(clone)的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。
2)Git的每一次提取操作,实际上都是一次对代码仓库的完整备份。
3)提交完全在本地完成,无须别人给你授权,你的版本库你作主,并且提交总是会成功。
4)甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支。
5)Git的提交不会被打断,直到你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生在PULL和PUSH过程中,不能自动解决的冲突会提示您手工完成。
6)冲突解决不再像是SVN一样的提交竞赛,而是在需要的时候才进行合并和冲突解决。
除此之外:
1)Git也可以模拟集中式的工作模式
Git版本库统一放在服务器中,可以为Git版本库进行授权:谁能创建版本库,谁能向版本库PUSH,谁能够读取(克隆)版本库;团队的成员先将服务器的版本库克隆到本地;并经常的从服务器的版本库拉(PULL)最新的更新;团队的成员将自己的改动推(PUSH)到服务器的版本库中,当其他人和版本库同步(PULL)时,会自动获取改变
2)Git的集中式工作模式非常灵活
完全可以在脱离Git服务器所在网络的情况下,如移动办公/出差时,照常使用代码库,只需要在能够接入Git服务器所在网络时,PULL和PUSH即可完成和服务器同步以及提交。Git提供rebase命令,可以让改动看起来是基于最新的代码实现的改动。
3)Git有更多的工作模式可以选择。
图2所示的应用文件的生成系统200同样可以是用于开发各种软件,诸如网络车服务软件、网购服务软件、外卖服务软件等的平台,该应用文件的生成系统200也能够执行本申请所提供一个或多个应用文件的生成方法。
图3示出根据本申请的一些实施例的可以实现本申请思想的版本控制器110、用户终端130的电子设备300的示例性硬件和软件组件的示意图。例如,处理器330可以用于电子设备300上,并且用于执行本申请中的功能。
电子设备300可以是通用计算机或特殊用途的计算机,两者都可以用于实现本申请的应用文件的生成方法。本申请尽管仅示出了一个计算机,但是为了方便起见,可以在多个类似平台上以分布式方式实现本申请描述的功能,以均衡处理负载。
例如,电子设备300可以包括连接到网络的网络端口310、用于执行程序指令的一个或多个处理器330、通信总线330和不同形式的存储介质340,例如,磁盘、ROM或RAM,或其任意组合。示例性地,计算机平台还可以包括存储在ROM、RAM或其他类型的非暂时性存储介质或其任意组合中的程序指令。根据这些程序指令可以实现本申请的方法。电子设备300还包括计算机与其他输入输出设备(例如键盘、显示屏)之间的输入/输出(Input/Output,I/O)接口350。
为了便于说明,在电子设备300中仅描述了一个处理器。然而,应当注意,本申请中的电子设备300还可以包括多个处理器,因此本申请中描述的一个处理器执行的步骤也可以由多个处理器联合执行或单独执行。例如,若电子设备300的处理器执行步骤A和步骤B,则应该理解,步骤A和步骤B也可以由两个不同的处理器共同执行或者在一个处理器中单独执行。例如,第一处理器执行步骤A,第二处理器执行步骤B,或者第一处理器和第二处理器共同执行步骤A和B。
图4为本申请实施例所提供的一种应用文件的生成方法,该方法可以应用于SVN版本控制器或者Git版本控制器,具体可以包括以下步骤:
步骤S402,获取目标项目对应的多个子模块。
通常来说,要完成一个目标项目,开发人员首先需要对用户想要实现的功能进行分析,将其功能需权拆分为不同的多个子需权,然后再针对每一个子需权,开发其对应的子模块,将多个子模块整合部署,即可实现用户所需的功能。
比如,目标项目网约车服务,基于其功能需权,可以拆分为请权方注册子模块、服务方注册子模块以及运营人员管理子模块。
在实际应用中,获取目标项目对应的多个子模块的方式可以有多种,针对不同的情况可以选择不同的实现方式,比如针对一个子需权,首先从现有的版本库中进行查找,如果可以查找到匹配的子模块,则可以直接权用,如果没有查找到匹配的,则需要重新开发等。
步骤S404,为多个子模块新建打包模块。
在获取到目标项目对应的多个子模块后,为其新建打包模块,这里,可以根据子模块的大小或者类别进行分组,为每组新建一个打包模块,或者也可以为所有的子模块新建一个打包模块,每一个打包模块均可以实现其对应的子模块的统一部署,具体需要新建几个打包模块可以根据实际情况进行不同的设定。
比如,在获取到上述请权方注册子模块、服务方注册子模块以及运营人员管理子模块后,为上述子模块新建一个或多个打包模块,具体数量可根据实际情况而定。
步骤S406,将多个子模块的源代码加载至打包模块。
在为多个子模块新建了打包模块后,进一步将子模块的源代码加载至对应的打包模块中,具体的源代码加载方式可以包括多种方式,比如,直接将源代码内容拷贝到打包模块中,或者通过在打包模块中配置源代码的地址,通过源代码地址来加载源代码等。
步骤S408,通过打包模块对多个子模块的源代码进行编译和打包,得到打包文件。
在将子模块的源代码加载至打包模块后,进一步通过打包模块对源代码进行编译和打包,如果上述建立的打包模块为多个,那么就会得到多个打包文件,如果上述建立的打包模块为一个,那么就会得到一个打包文件。
步骤S410,基于打包文件生成目标项目的应用文件。
在实际应用中,如果上述打包文件有多个,那么就将多个打包文件进行合并,得到该目标项目的应用文件。如果打包文件只有一个,那么该打包文件也就是最终目标项目的应用文件。
本发明实施例所提供的应用文件的生成方法,可以为目标项目的多个子模块,也就是实现功能关联性较强的子模块,新建一个打包模块,并通过该打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
图5示出了本申请实施例所提供的另一种应用文件的生成方法,该方法可以应用于SVN版本控制器或者Git版本控制器,具体可以包括以下步骤:
步骤S502,获取目标项目的功能需权信息;功能需权信息包括多个用以实现不同功能的子需权信息。
在实际应用中,版本控制器首先获取目标项目的功能需权信息,该功能需权信息可以是开发人员在建立该目标项目时所提供的;目标项目不同,功能需权信息也不同。进一步,可以将功能需权信息拆分为多个用以实现该功能的子需权信息,比如:交互需权信息、身份注册和校验身份需权等。在每个目标项目的多个实现其功能的子需权对应的子模块中,往往有一些是比较常见、相对比较成熟的模块,因此,可以通过以下步骤节省开发成本。
步骤S504,判断从版本库中是否能查找到子需权信息对应的子模块。
如果是,执行步骤S506,将查找到的子模块作为目标项目对应的多个子模块。
基于每个子需权信息从版本库中查找是否有与该子需权信息对应的子模块,如果有,则直接权用该子模块,这种方式比较方便快捷,节省开发人员的时间成本、人力成本。对于一个目标项目中比较有创造性的子需权,往往在现有的版本库中查不到其对应的子模块,这种情况下即可执行以下步骤。
如果否,执行步骤S508,提示为子需权信息新建子模块;接收并保存新建的子需权信息的子模块。
当版本控制器从版本库中没有查找到子需权信息对应的子模块时,会提示开发人员新建一个子模块,开发人员可以在SVN版本控制器或者Git版本控制器上维护一个独立的模块,在该独立模块下进行开发、测试工作,在测试完成后,将开发好的子模块保存在版本库中,以方便后续进行统一部署。
需要说明的是,各个子需权信息所对应的子模块的源代码相对独立,可以独立完成开发和测试,这种方式能够得到更加符合项目需权的子模块。
在本发明实施例中,上述为多个子模块新建打包模块的步骤通过以下方式实现:
在本实施例中,应用Maven构建工具或Gradle构建工具,为多个子模块新建具有编译打包功能的打包模块。Maven构建工具的主要功能主要分为五点,分别是依赖管理系统、多模块构建、一致的项目结构、一致的构建模型和插件机制。在微服务的浪潮下,将一个项目分解为多个模块已经是很通用的一种方式。通过Maven构建工具和Gradle构建工具均可以为多个子模块新建具有编译打包功能的打包模块。
在获取到上述多个子模块后,还可以包括以下步骤:
步骤S510,根据多个子模块的模块类别和/或模块大小,将多个子模块分组。
步骤S512,为每组子模块均创建一个打包模块。
这里模块类别主要指子模块所实现的功能,模块大小指所占存储空间的大小。需要说明的是,本发明实施例中包括但不限于上述两种分组依据。
下面分别列举一个依据模块大小进行分组的例子和依据模块类别进行分组的例子:
(1)现在有一个需权A,开发人员可以将其拆解为子需权A1、A2和A3,然后分别获取到与三个子需权分别对应的三个子模块A11、A22、A33,这里可以通过从版本库中查找与子需权匹配的子模块,也可以新建与子需权对应的子模块,有可能子模块A11、A22比较小,就将子模块A11、A22分为一组,而A33相对来说占据空间比较大,将子模块A33单独为一组,分别为上述两组新建一个打包模块,以通过各自的打包模块分别进行打包部署。
(2)开发一个网购平台,这个平台可能有三个角色,买家,商家以及运营人员,其中买家和商家是外部用户,运营人员是内部用户,那么分别开发三个子模块,B1针对买家,B2针对商家,B3针对运营人员,最终打包的时候B1、B2为一组,一起打包部署,B3单独打包部署,之所以这么做是因为,买家和商家的服务中必须24小时可用的,所以要保证高稳定性,而运营服务可以允许短时间内不可用,进一步,还可以再拆的更细一点,将注册拆分为一个子模块,那么就要新建一个注册子模块,开发测试,然后最终和其它子模块一起打包成一个服务。
图6和图7示出两种子模块分组打包示意图,子模块包括:公共模块一、公共模块二、业务模块一和业务模块二,第一种方式中,将四个子模块统一打包部署为一个服务,第二种方式中,分别将公共模块一和公共模块二打包成一个服务,将业务模块一和业务模块二打包成一个服务,需要说明的是,还可以根据实际情况,进行不同的打包部署,比如,将每一个子模块单独打包部署等。
本发明实施例中,基于子模块的类别或大小,将目标项目对应的多个子模块进行分组,为每组新建一个打包模块,通过多个打包模块分别对每组子模块进行编译打包,从而实现不同的服务。
针对上述新建有不同个数的打包模块的情况,将多个子模块的源代码加载至打包模块的步骤包括:如果打包模块为一个,将目标项目对应的多个子模块的源代码均加载至打包模块;如果打包模块为多个,执行步骤S514,将每组子模块的源代码加载至对应的打包模块。
上述将多个子模块的源代码加载至打包模块的步骤包括:对于每个打包模块,均执行:获取打包模块对应的一组子模块;将一组子模块的源代码地址添加至打包模块的配置信息中,以使打包模块根据源代码地址下载一组子模块的源代码。
Maven构建工具基于XML进行配置。将每个打包模块对应的每组子模块的源代码地址添加至该打包模块的XML配置信息中,即可使打包模块根据XML配置信息中的源代码地址,下载相应子模块的源代码。
在将子模块的源代码加载至对应的打包模块后,还可以执行以下步骤。
步骤S516,通过打包模块对子模块的源代码中的编译性代码进行编译,生成每个子模块对应的编译文件。
步骤S518,将编译文件进行重复文件剔除处理。
步骤S520,打包剔除处理后的编译文件。
上述源代码中即包括可编译的编译性代码,同时还包括用于解释说明的非编译性语言,在具体实施时,每个打包模块只对其对应的源代码中的可编译的编译性代码进行编译操作,从而生成每个子模块对应的编译文件,比如:打包模块M中加载有子模块A、B和C的源代码地址,打包模块M根据分别根据子模块A、B和C的源代码地址下载每个子模块的源代码;然后对每个子模块A、B和C的源代码进行编译,得到多个编译文件,如子模块A对应的编译文件A1、A2、A3,子模块B对应的编译文件B1、B2、B3,子模块C对应的编译文件C1、C2、C3。
然后对生成的多个编译文件进行重复文件剔除处理,具体为:将编译文件中文件名相同的文件作为重复文件;保留重复文件中一个文件,删除重复文件中的其余文件。比如:如果上述编译文件中A2和B1具有相同的文件名,就删除其中一个,最终留下编译文件A1、A2、A3、B2、B3、C1、C2、C3。
需要说明的是,重复文件的判断依据主要为文件名,如两个文件名完全相同则视为重复,如果文件名相似仅版本不同,也视为重复,如fastjson-1.2.31.jar和fastjson-1.2.37.jar。
最后打包模块再对剔除了重复文件后的编译文件进行打包,得到每个子模块对应的打包文件,在Maven构建工具中打包命令是mvn package,在Grade构建工具中,打包命令为gradle build。
比如:上述子模块A对应的打包文件A’中,包括编译文件A1、A2、A3,子模块B对应的打包文件B’中,包括编译文件B2、B3,子模块C对应的打包文件C’中,包括编译文件C1、C2、C3。
在通过打包模块对子模块的编译和打包的过程中,剔除了重复文件,使得最终生成的应用文件更加简洁,代码逻辑更加简单清晰。
通过每个打包模块对其对应的子模块进行打包处理,得到每个子模块对应的打包文件后,进一步基于打包文件生成目标项目的应用文件。
如果打包文件为多个,执行步骤S522,对多个打包文件进行合并,将合并后的打包文件作为目标项目的应用文件。比如:将上述子模块A、B和C分别对应的打包文件A’、B’和C’合并成应用文件D,应用文件D中包括打包文件A’、B’和C’,其中,打包文件A’包括编译文件A1、A2、A3,打包文件B’中,包括编译文件B2、B3,子模块C对应的打包文件C’中,包括编译文件C1、C2、C3。
如果打包文件为一个,则将打包文件作为目标项目的应用文件。
最后,在生成目标项目的应用文件后,再执行步骤S524,对应用文件进行测试。通过对其进行测试,检测该应用文件是否能完成预期的功能。
图8是示出本申请的一些实施例的应用文件的生成装置的框图,该应用文件的生成装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述服务器,或服务器的处理器,也可以理解为独立于上述服务器或处理器之外的在服务器控制下实现本申请功能的组件,如图8所示,应用文件的生成装置可以包括:子模块获取模块802、打包模块新建模块804、代码加载模块808、编译打包模块808和应用文件生成模块810。
其中,子模块获取模块802,用于获取目标项目对应的多个子模块;打包模块新建模块804,用于为多个子模块新建打包模块;代码加载模块808,用于将多个子模块的源代码加载至打包模块;编译打包模块808,用于通过打包模块对多个子模块的源代码进行编译和打包,得到打包文件;应用文件生成模块810,用于基于打包文件生成目标项目的应用文件。
本发明实施例所提供的应用文件的生成装置,可以为目标项目的多个子模块,也就是实现功能关联性较强的子模块,新建打包模块,并通过该打包模块对多个子模块的源代码进行编译和打包,使生成的目标项目的应用文件中代码逻辑关联性强,易于维护。
在具体实施中,子模块获取模块802还用于:获取目标项目的功能需权信息;功能需权信息包括多个用以实现不同功能的子需权信息;从版本库中查找每个子需权信息对应的子模块;将查找到的子模块作为目标项目对应的多个子模块。
在本申请较佳的实施方式中,子模块获取模块802还用于:如果从版本库中未查找到子需权信息对应的子模块,提示为子需权信息新建子模块;接收并保存新建的子需权信息的子模块。
在具体实施中,打包模块新建模块804还用于:应用Maven构建工具或Gradle构建工具,为多个子模块新建具有编译打包功能的打包模块。
作为一种优选实施方式,打包模块新建模块804还用于:根据多个子模块的模块类别和/或模块大小,将多个子模块分组;为每组子模块均创建一个打包模块。
在具体实施中,代码加载模块808还用于:如果打包模块为一个,将目标项目对应的多个子模块的源代码均加载至打包模块;如果打包模块为多个,将每组子模块的源代码加载至对应的打包模块。
在本申请较佳的实施方式中,代码加载模块808还用于:对于每个打包模块,均执行:获取打包模块对应的一组子模块;将一组子模块的源代码地址添加至打包模块的配置信息中,以使打包模块根据源代码地址下载一组子模块的源代码。
在本申请较佳的实施方式中,编译打包模块808还用于:通过打包模块对子模块的源代码中的编译性代码进行编译,生成每个子模块对应的编译文件;将编译文件进行重复文件剔除处理;打包剔除处理后的编译文件。
在本申请较佳的实施方式中,编译打包模块808还用于:将编译文件中文件名相同的文件作为重复文件;保留重复文件中一个文件,删除重复文件中的其余文件。
在具体实施中,应用文件生成模块810还用于:如果打包文件为多个,对多个打包文件进行合并;将合并后的打包文件作为目标项目的应用文件。
在另一种实施方式中,应用文件生成模块810还用于:如果打包文件为一个,将打包文件作为目标项目的应用文件。
在另一种实施方式中,上述应用文件的生成装置还包括:测试模块812,用于对应用文件进行测试。
上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过LAN、WAN、蓝牙、ZigBee、或NFC等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
另外,在本申请实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
在本申请的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权权要权的保护范围为准。
Claims (26)
1.一种应用文件的生成方法,其特征在于,所述方法应用于版本控制器,包括:
获取目标项目对应的多个子模块;
为多个所述子模块新建打包模块;
将多个所述子模块的源代码加载至所述打包模块;
通过所述打包模块对多个所述子模块的源代码进行编译和打包,得到打包文件;
基于所述打包文件生成所述目标项目的应用文件。
2.根据权利要求1所述的方法,其特征在于,获取目标项目对应的多个子模块的步骤,包括:
获取目标项目的功能需权信息;所述功能需权信息包括多个用以实现不同功能的子需权信息;
从版本库中查找每个所述子需权信息对应的子模块;
将查找到的子模块作为所述目标项目对应的多个子模块。
3.根据权利要求2所述的方法,其特征在于,获取目标项目对应的多个子模块的步骤,还包括:
如果从版本库中未查找到所述子需权信息对应的子模块,提示为所述子需权信息新建子模块;
接收并保存新建的所述子需权信息的子模块。
4.根据权利要求1所述的方法,其特征在于,为多个所述子模块新建打包模块的步骤,包括:
应用Maven构建工具或Gradle构建工具,为多个所述子模块新建具有编译打包功能的打包模块。
5.根据权利要求1所述的方法,其特征在于,为多个所述子模块新建打包模块的步骤,包括:
根据多个所述子模块的模块类别和/或模块大小,将多个所述子模块分组;
为每组子模块均创建一个打包模块。
6.根据权利要求5所述的方法,其特征在于,将多个所述子模块的源代码加载至所述打包模块的步骤,包括:
如果所述打包模块为一个,将所述目标项目对应的多个子模块的源代码均加载至所述打包模块;
如果所述打包模块为多个,将每组子模块的源代码加载至对应的所述打包模块。
7.根据权利要求1所述的方法,其特征在于,将多个所述子模块的源代码加载至所述打包模块的步骤,包括:
对于每个打包模块,均执行:获取所述打包模块对应的一组子模块;将所述一组子模块的源代码地址添加至所述打包模块的配置信息中,以使所述打包模块根据所述源代码地址下载所述一组子模块的源代码。
8.根据权利要求1所述的方法,其特征在于,通过所述打包模块对多个所述子模块的源代码进行编译和打包的步骤,包括:
通过所述打包模块对所述子模块的源代码中的编译性代码进行编译,生成每个所述子模块对应的编译文件;
将所述编译文件进行重复文件剔除处理;
打包剔除处理后的所述编译文件。
9.根据权利要求8所述的方法,其特征在于,将所述编译文件进行重复文件剔除处理的步骤,包括;
将所述编译文件中文件名相同的文件作为重复文件;
保留所述重复文件中一个文件,删除所述重复文件中的其余文件。
10.根据权利要求1所述的方法,其特征在于,基于所述打包文件生成所述目标项目的应用文件的步骤,包括:
如果所述打包文件为多个,对多个所述打包文件进行合并;
将合并后的打包文件作为所述目标项目的应用文件。
11.根据权利要求1所述的方法,其特征在于,基于所述打包文件生成所述目标项目的应用文件的步骤,包括:
如果所述打包文件为一个,将所述打包文件作为所述目标项目的应用文件。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所述应用文件进行测试。
13.一种应用文件的生成装置,其特征在于,所述装置应用于版本控制器,包括:
子模块获取模块,用于获取目标项目对应的多个子模块;
打包模块新建模块,用于为多个所述子模块新建打包模块;
代码加载模块,用于将多个所述子模块的源代码加载至所述打包模块;
编译打包模块,用于通过所述打包模块对多个所述子模块的源代码进行编译和打包,得到打包文件;
应用文件生成模块,用于基于所述打包文件生成所述目标项目的应用文件。
14.根据权利要求13所述的装置,其特征在于,所述子模块获取模块还用于:
获取目标项目的功能需权信息;所述功能需权信息包括多个用以实现不同功能的子需权信息;
从版本库中查找每个所述子需权信息对应的子模块;
将查找到的子模块作为所述目标项目对应的多个子模块。
15.根据权利要求14所述的装置,其特征在于,所述子模块获取模块还用于:
如果从版本库中未查找到所述子需权信息对应的子模块,提示为所述子需权信息新建子模块;
接收并保存新建的所述子需权信息的子模块。
16.根据权利要求13所述的装置,其特征在于,所述打包模块新建模块还用于:
应用Maven构建工具或Gradle构建工具,为多个所述子模块新建具有编译打包功能的打包模块。
17.根据权利要求13所述的装置,其特征在于,所述打包模块新建模块还用于:
根据多个所述子模块的模块类别和/或模块大小,将多个所述子模块分组;
为每组子模块均创建一个打包模块。
18.根据权利要求17所述的装置,其特征在于,所述代码加载模块还用于:
如果所述打包模块为一个,将所述目标项目对应的多个子模块的源代码均加载至所述打包模块;
如果所述打包模块为多个,将每组子模块的源代码加载至对应的所述打包模块。
19.根据权利要求13所述的装置,其特征在于,所述代码加载模块还用于:
对于每个打包模块,均执行:获取所述打包模块对应的一组子模块;将所述一组子模块的源代码地址添加至所述打包模块的配置信息中,以使所述打包模块根据所述源代码地址下载所述一组子模块的源代码。
20.根据权利要求13所述的装置,其特征在于,所述编译打包模块还用于:
通过所述打包模块对所述子模块的源代码中的编译性代码进行编译,生成每个所述子模块对应的编译文件;
将所述编译文件进行重复文件剔除处理;
打包剔除处理后的所述编译文件。
21.根据权利要求20所述的装置,其特征在于,所述编译打包模块还用于:
将所述编译文件中文件名相同的文件作为重复文件;
保留所述重复文件中一个文件,删除所述重复文件中的其余文件。
22.根据权利要求13所述的装置,其特征在于,所述应用文件生成模块还用于:
如果所述打包文件为多个,对多个所述打包文件进行合并;
将合并后的打包文件作为所述目标项目的应用文件。
23.根据权利要求13所述的装置,其特征在于,所述应用文件生成模块还用于:
如果所述打包文件为一个,将所述打包文件作为所述目标项目的应用文件。
24.根据权利要求13所述的装置,其特征在于,所述装置还包括:测试模块,用于对所述应用文件进行测试。
25.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行如权利要求1至12任一所述的应用文件的生成方法的步骤。
26.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至12任一所述的应用文件的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811477404.4A CN111273943A (zh) | 2018-12-04 | 2018-12-04 | 应用文件的生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811477404.4A CN111273943A (zh) | 2018-12-04 | 2018-12-04 | 应用文件的生成方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111273943A true CN111273943A (zh) | 2020-06-12 |
Family
ID=70996809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811477404.4A Pending CN111273943A (zh) | 2018-12-04 | 2018-12-04 | 应用文件的生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111273943A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858370A (zh) * | 2020-07-28 | 2020-10-30 | 浪潮云信息技术股份公司 | DevOps的实现方法、装置、计算机可读介质 |
CN112070645A (zh) * | 2020-07-28 | 2020-12-11 | 智维云图(上海)智能科技有限公司 | 一种通过模块化组装部署消防项目的方法及系统 |
CN112148303A (zh) * | 2020-09-28 | 2020-12-29 | Oppo(重庆)智能科技有限公司 | 文件生成方法、装置、终端及存储介质 |
CN113821204A (zh) * | 2021-08-30 | 2021-12-21 | 济南浪潮数据技术有限公司 | 一种组件生成方法、装置、电子设备及可读存储介质 |
CN117454817A (zh) * | 2023-12-25 | 2024-01-26 | 芯能量集成电路(上海)有限公司 | 一种基于fpga的工程处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017026738A1 (ko) * | 2015-08-10 | 2017-02-16 | 라인 가부시키가이샤 | 어플리케이션의 코드를 보호하기 위한 시스템 및 방법 |
CN106874394A (zh) * | 2017-01-13 | 2017-06-20 | 百度在线网络技术(北京)有限公司 | 一种文件打包预处理的方法与设备 |
CN107066291A (zh) * | 2017-02-09 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 软件开发工具包的打包方法、装置及设备、可读介质 |
CN107357593A (zh) * | 2017-08-24 | 2017-11-17 | 武汉斗鱼网络科技有限公司 | 源代码文件组建方法、装置、电子终端及可读存储介质 |
CN107678750A (zh) * | 2017-10-27 | 2018-02-09 | 北京腾云天下科技有限公司 | 一种sdk打包方法、计算设备及sdk打包系统 |
-
2018
- 2018-12-04 CN CN201811477404.4A patent/CN111273943A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017026738A1 (ko) * | 2015-08-10 | 2017-02-16 | 라인 가부시키가이샤 | 어플리케이션의 코드를 보호하기 위한 시스템 및 방법 |
CN106874394A (zh) * | 2017-01-13 | 2017-06-20 | 百度在线网络技术(北京)有限公司 | 一种文件打包预处理的方法与设备 |
CN107066291A (zh) * | 2017-02-09 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 软件开发工具包的打包方法、装置及设备、可读介质 |
CN107357593A (zh) * | 2017-08-24 | 2017-11-17 | 武汉斗鱼网络科技有限公司 | 源代码文件组建方法、装置、电子终端及可读存储介质 |
CN107678750A (zh) * | 2017-10-27 | 2018-02-09 | 北京腾云天下科技有限公司 | 一种sdk打包方法、计算设备及sdk打包系统 |
Non-Patent Citations (3)
Title |
---|
WONDERTANG: "maven详解-(6)聚合", pages 1 - 4, Retrieved from the Internet <URL:https://blog.csdn.net/jinjin603/article/details/78338625> * |
李晓锋: "《AVR单片机原理与应用》", 北京:北京理工大学出版社, pages: 140 - 152 * |
飘逸的小兔叽: "Maven包引用出现重复包,去重复包3种方法(javassist)", pages 1 - 2, Retrieved from the Internet <URL:https://blog.csdn.net/qq_35065439/article/details/79158611> * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858370A (zh) * | 2020-07-28 | 2020-10-30 | 浪潮云信息技术股份公司 | DevOps的实现方法、装置、计算机可读介质 |
CN112070645A (zh) * | 2020-07-28 | 2020-12-11 | 智维云图(上海)智能科技有限公司 | 一种通过模块化组装部署消防项目的方法及系统 |
CN111858370B (zh) * | 2020-07-28 | 2023-12-26 | 浪潮云信息技术股份公司 | DevOps的实现方法、装置、计算机可读介质 |
CN112148303A (zh) * | 2020-09-28 | 2020-12-29 | Oppo(重庆)智能科技有限公司 | 文件生成方法、装置、终端及存储介质 |
CN112148303B (zh) * | 2020-09-28 | 2024-05-28 | Oppo(重庆)智能科技有限公司 | 文件生成方法、装置、终端及存储介质 |
CN113821204A (zh) * | 2021-08-30 | 2021-12-21 | 济南浪潮数据技术有限公司 | 一种组件生成方法、装置、电子设备及可读存储介质 |
CN113821204B (zh) * | 2021-08-30 | 2024-02-23 | 济南浪潮数据技术有限公司 | 一种组件生成方法、装置、电子设备及可读存储介质 |
CN117454817A (zh) * | 2023-12-25 | 2024-01-26 | 芯能量集成电路(上海)有限公司 | 一种基于fpga的工程处理方法、装置、电子设备及存储介质 |
CN117454817B (zh) * | 2023-12-25 | 2024-04-12 | 芯能量集成电路(上海)有限公司 | 一种基于fpga的工程处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111273943A (zh) | 应用文件的生成方法、装置及电子设备 | |
CN107766050B (zh) | 一种异构应用的部署方法以及装置 | |
CN107783816A (zh) | 虚拟机的创建方法及装置、大数据集群创建的方法及装置 | |
CN104461693B (zh) | 一种桌面云计算环境下的虚拟机更新方法和系统 | |
CN111386523B (zh) | 用于基于区块链的去中心化应用开发的系统和方法 | |
CN112488855B (zh) | 一种基于规则模板的业务校验方法及设备 | |
CN107885551A (zh) | 一种服务部署方法、装置、可读介质及存储控制器 | |
CN112036577B (zh) | 基于数据形式的应用机器学习的方法、装置和电子设备 | |
JP2019533256A (ja) | アプリケーションリンク拡張方法、装置、及びシステム | |
Christidis et al. | Enabling serverless deployment of large-scale ai workloads | |
US20220103555A1 (en) | Service deployment method, device, system, and computer-readable storage medium | |
CN110244951B (zh) | 应用发布方法及装置 | |
CN108170588A (zh) | 一种测试环境搭建方法及装置 | |
CN111831744B (zh) | Dapp的链上数据检索系统、方法及介质 | |
CN110471828B (zh) | 一种操作系统测试方法、装置及其设备 | |
CN113741931B (zh) | 软件升级方法、装置、电子设备及可读存储介质 | |
CN115185946A (zh) | 多租户系统、多租户管理方法、计算机设备和存储介质 | |
CN112579077B (zh) | 应用中的页面处理方法、装置、应用服务平台及设备 | |
Kaur et al. | Docker and its features | |
CN116266117A (zh) | 模型转换方法、计算机程序产品、存储介质及电子设备 | |
CN110674110B (zh) | 银行分布式数据库的构建方法及装置 | |
CN115809084A (zh) | 版本的生成方法及其装置、电子设备及存储介质 | |
CN113704120A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN113791977A (zh) | 代码开发的处理方法、装置、电子设备与存储介质 | |
Vostokin et al. | Implementation of frequency analysis of twitter microblogging in a hybrid cloud based on the Binder, Everest platform and the Samara University virtual desktop service |
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 |