CN112114871B - 一种代码共享方法、装置、服务器、终端及介质 - Google Patents
一种代码共享方法、装置、服务器、终端及介质 Download PDFInfo
- Publication number
- CN112114871B CN112114871B CN202011043970.1A CN202011043970A CN112114871B CN 112114871 B CN112114871 B CN 112114871B CN 202011043970 A CN202011043970 A CN 202011043970A CN 112114871 B CN112114871 B CN 112114871B
- Authority
- CN
- China
- Prior art keywords
- code file
- code
- file
- specified
- server
- 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
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/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种代码共享方法、装置、服务器、终端及介质,涉及计算机技术领域。本申请的方法应用于服务器,服务器中存储多个代码文件以及各代码文件之间的依赖关系,该方法包括:接收终端发送的代码文件下载请求,代码文件下载请求用于请求下载指定代码文件;查找指定代码文件,以及指定代码文件的依赖代码文件,依赖代码文件为被指定代码文件调用的代码文件;向终端发送指定代码文件,以及指定代码文件的依赖代码文件,以使得终端将指定代码文件和指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。采用该方法可以解决因common包臃肿导致的传输资源浪费的问题。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种代码共享方法、装置、服务器、终端及介质。
背景技术
目前,在进行应用程序(Application,APP)的功能开发时可以采用微服务架构,可以将APP中的不同功能模块抽象为不同的服务,使得开发人员可以同时、相互独立地对各个服务进行需求开发,降低功能之间的耦合性。为了避免重复的代码,各个服务的公共代码可以被独立存储为一个公共(common)包,该common包可以为jar包的形式。各个服务可以根据需要引用该common包中的代码。
随着业务的发展以及新功能的迭代,公共代码可复用的场景越来越多,导致common包越来越臃肿,各个服务在引用common包中的代码时,需要下载整个common包。比如,视频APP中的电视剧模块可以使用代码文件A和代码文件B,电影模块可以使用代码文件B和代码文件C,短视频模块可以使用代码文件A和代码文件C,则需要在common包中存储代码文件A、代码文件B和代码文件C。每个模块都需要下载整个common包才可以使用common包中的代码,导致传输资源的浪费。
发明内容
本发明实施例的目的在于提供种代码共享方法、装置、服务器、终端及介质,以解决因common包臃肿导致的传输资源浪费的问题。具体技术方案如下:
第一方面,本申请实施例提供一种代码共享方法,所述方法应用于服务器,所述服务器中存储多个代码文件以及各代码文件之间的依赖关系,所述方法包括:
接收终端发送的代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
查找所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为被所述指定代码文件调用的代码文件;
向所述终端发送所述指定代码文件,以及所述指定代码文件的依赖代码文件,以使得所述终端将所述指定代码文件和所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
在一种可能的实现方式中,所述查找所述指定代码文件,以及所述指定代码文件的依赖代码文件,包括:
查找所述指定代码文件;
查找所述指定代码文件直接依赖的第一级代码文件;
若查找到所述指定代码文件直接依赖的第一级代码文件,则查找所述第一级代码文件直接依赖的第二级代码文件;
依次查找每一级代码文件直接依赖的下一级代码文件,直至当前查找到的代码文件无下一级文件,将查找到所有代码文件作为所述指定代码文件的依赖代码文件。
在一种可能的实现方式中,所述服务器中包括代码池和依赖关系信息,所述代码池用于存储代码文件,针对每个代码文件,所述依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在所述代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
所述查找所述指定代码文件,包括:
从所述依赖关系信息中,查找所述指定代码文件的存储路径;
基于所述指定代码文件的存储路径,从所述代码池中获取所述指定代码文件;
所述查找所述指定代码文件直接依赖的第一级代码文件,包括:
从所述依赖关系信息中,查找所述指定代码文件直接依赖的第一级代码文件的文件标识;
从所述依赖关系信息中,查找所述第一级代码文件的文件标识对应的存储路径;
基于查找到的存储路径,从所述代码池中获取所述第一级代码文件。
在一种可能的实现方式中,所述方法还包括:
接收终端上传的共享代码文件;
解析所述共享代码文件的工程名和文件路径;
基于所述工程名和所述文件路径确定所述共享代码文件在所述代码池中的存储路径;
按照确定出的存储路径在所述代码池中存储所述共享代码文件;
在依赖关系信息中存储所述共享代码文件的文件标识、存储路径以及直接依赖的代码文件的文件标识,以使得所述服务器通过依赖关系信息存储各代码文件之间的多重嵌套关系,所述多重嵌套关系为树形结构。
在一种可能的实现方式中,所述依赖关系信息中还包括所述共享代码文件的创建时间和更新时间;在所述接收终端上传的共享代码文件之后,所述方法还包括:
将接收到所述共享代码文件的时间作为所述共享代码文件的创建时间,在所述依赖关系信息中存储所述共享代码文件的创建时间;
若接收到更新后的所述共享代码文件,则将更新后的所述共享代码文件覆盖所述代码池中存储的所述共享代码文件;
将接收到更新后的所述共享代码文件的时间作为所述共享代码文件的更新时间,在所述依赖关系信息中存储所述共享代码文件的更新时间。
在一种可能的实现方式中,所述方法还包括:
接收所述终端发送的用于请求获取所述终端已下载的各代码文件的更新时间的请求消息;
从所述依赖关系信息中,获取所述终端已下载的各代码文件的更新时间;
向所述终端发送所述终端已下载的各代码文件的更新时间。
第二方面,本申请实施例提供一种代码共享方法,所述方法应用于终端,所述方法包括:
向服务器发送代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
接收所述服务器发送的所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为所述指定代码文件调用的代码文件;
将所述指定代码文件以及所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
在一种可能的实现方式中,在所述向服务器发送代码文件下载请求之前,所述方法还包括:
展示所述服务器中存储的代码文件信息;
识别用户选择的代码文件,将所述用户选择的代码文件作为所述指定代码文件,生成所述代码文件下载请求。
在一种可能的实现方式中,所述方法还包括:
每隔指定时长,向服务器请求获取自身已下载的各代码文件的更新时间;
针对每个自身已下载的代码文件,基于该已下载的代码文件的时间戳和从所述服务器获取的该代码文件的更新时间,判断该已下载的代码文件是否发生版本更新;
若确定该已下载的代码文件发生版本更新,则向所述服务器请求下载该已下载的代码文件对应的更新后的代码文件;
接收并存储所述服务器发送的更新后的代码文件。
第三方面,本申请实施例提供一种代码共享装置,所述装置应用于服务器,所述服务器中存储多个代码文件以及各代码文件之间的依赖关系,所述装置包括:
接收模块,用于接收终端发送的代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
查找模块,用于查找所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为被所述指定代码文件调用的代码文件;
发送模块,用于向所述终端发送所述查找模块查找到的指定代码文件,以及所述指定代码文件的依赖代码文件,以使得所述终端将所述指定代码文件和所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
在一种可能的实现方式中,所述查找模块,具体用于:
查找所述指定代码文件;
查找所述指定代码文件直接依赖的第一级代码文件;
若查找到所述指定代码文件直接依赖的第一级代码文件,则查找所述第一级代码文件直接依赖的第二级代码文件;
依次查找每一级代码文件直接依赖的下一级代码文件,直至当前查找到的代码文件无下一级文件,将查找到所有代码文件作为所述指定代码文件的依赖代码文件。
在一种可能的实现方式中,所述服务器中包括代码池和依赖关系信息,所述代码池用于存储代码文件,针对每个代码文件,所述依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在所述代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
所述查找模块,具体用于:
从所述依赖关系信息中,查找所述指定代码文件的存储路径;
基于所述指定代码文件的存储路径,从所述代码池中获取所述指定代码文件;
所述查找所述指定代码文件直接依赖的第一级代码文件,包括:
从所述依赖关系信息中,查找所述指定代码文件直接依赖的第一级代码文件的文件标识;
从所述依赖关系信息中,查找所述第一级代码文件的文件标识对应的存储路径;
基于查找到的存储路径,从所述代码池中获取所述第一级代码文件。
在一种可能的实现方式中,所述装置还包括:解析模块、确定模块和存储模块;
所述接收模块,还用于接收终端上传的共享代码文件;
所述解析模块,用于解析所述共享代码文件的工程名和文件路径;
所述确定模块,基于所述工程名和所述文件路径确定所述共享代码文件在所述代码池中的存储路径;
所述存储模块,用于按照所述确定模块确定出的存储路径在所述代码池中存储所述共享代码文件;在依赖关系信息中存储所述共享代码文件的文件标识、存储路径以及直接依赖的代码文件的文件标识,以使得所述存储模块通过依赖关系信息存储各代码文件之间的多重嵌套关系,所述多重嵌套关系为树形结构。
在一种可能的实现方式中,所述依赖关系信息中还包括所述共享代码文件的创建时间和更新时间;
所述存储模块,还用于:
将所述接收模块接收到所述共享代码文件的时间作为所述共享代码文件的创建时间,在所述依赖关系信息中存储所述共享代码文件的创建时间;
若接收到更新后的所述共享代码文件,则将更新后的所述共享代码文件覆盖所述代码池中存储的所述共享代码文件;
将接收到更新后的所述共享代码文件的时间作为所述共享代码文件的更新时间,在所述依赖关系信息中存储所述共享代码文件的更新时间。
在一种可能的实现方式中,所述装置还包括:获取模块;
所述接收模块,用于接收所述终端发送的用于请求获取所述终端已下载的各代码文件的更新时间的请求消息;
所述获取模块,用于从所述依赖关系信息中,获取所述终端已下载的各代码文件的更新时间;
所述发送模块,还用于向所述终端发送所述终端已下载的各代码文件的更新时间。
第四方面,本申请实施例提供一种代码共享装置,所述装置应用于终端,所述装置包括:
发送模块,用于向服务器发送代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
接收模块,用于接收所述服务器发送的所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为所述指定代码文件调用的代码文件;
打包模块,用于将所述指定代码文件以及所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
在一种可能的实现方式中,所述装置还包括:
展示模块,用于展示所述服务器中存储的代码文件信息;
生成模块,用于识别用户选择的代码文件,将所述用户选择的代码文件作为所述指定代码文件,生成所述代码文件下载请求。
在一种可能的实现方式中,所述装置还包括:
请求模块,用于每隔指定时长,向服务器请求获取自身已下载的各代码文件的更新时间;
判断模块,用于针对每个自身已下载的代码文件,基于该已下载的代码文件的时间戳和从所述服务器获取的该代码文件的更新时间,判断该已下载的代码文件是否发生版本更新;
所述请求模块,还用于若确定该已下载的代码文件发生版本更新,则向所述服务器请求下载该已下载的代码文件对应的更新后的代码文件;
所述接收模块,还用于接收并存储所述服务器发送的更新后的代码文件。
第五方面,本发明实施例还提供一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的代码共享方法步骤。
第六方面,本发明实施例还提供一种终端,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第二方面中任一所述的代码共享方法步骤。
第七方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的代码共享方法。
第八方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的代码共享方法。
采用上述技术方案,因服务器中存储了多个代码文件以及各代码文件之间的依赖关系,当服务器接收到终端发送的针对指定代码文件的代码文件下载请求时,可以为终端发送该指定代码文件以及指定代码文件的依赖代码文件。可见,终端可以按需请求下载开发过程中需要的指定代码文件,且服务器主动为终端提供指定代码文件所依赖的其他代码文件,实现了代码文件的动态打包。相比于相关技术,本申请实施例中终端无需获取所有的代码文件,且保证了服务器中存储的代码文件的高复用性,解决了由于common包臃肿导致的传输资源浪费的问题。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种代码共享系统的结构示意图;
图2为本申请实施例提供的一种代码共享方法的流程图;
图3为本申请实施例提供的一种查找代码文件的方法的流程图;
图4为本申请实施例提供的一种代码文件之间的依赖关系的示例性示意图;
图5为本申请实施例提供的一种存储共享代码文件的方法的流程图;
图6为本申请实施例提供的一种代码文件的工程代码路径的示例性示意图;
图7为本申请实施例提供的另一种代码共享方法的流程图;
图8为本申请实施例提供的更新代码文件的方法的流程图;
图9为本申请实施例提供的一种代码共享装置的结构示意图;
图10为本申请实施例提供的另一种代码共享装置的结构示意图;
图11为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
在相关技术中,由于存在common包臃肿的问题,开发人员逐渐选择在common包中开发有限的代码,即减少在common包中存储的公共代码。但是若减少在common包中存储公共代码,将导致可重用的代码较少,这与使用微服务架构的初衷不同。若分别将每个服务使用的代码文件分别打包存储,将导致代码文件包的数量过多,不易于管理。比如,若视频APP中的电视剧模块可以使用代码文件A和代码文件B,则需要将代码文件A和代码文件B打包存储。电影模块可以使用代码文件B和代码文件C,则需要将代码文件B和代码文件C打包存储。短视频模块可以使用代码文件A和代码文件C,则需要将代码文件A和代码文件C打包存储。即每个代码文件都被存储了两次,占用较多的存储资源,且不易于管理。可见,相关技术中,各服务的独立性与可复用代码的存储方式之间存在矛盾,无法解决common包臃肿的问题。
为了解决相关技术中的问题,本申请实施例提供了一种代码共享的方法,该方法应用于代码共享系统中,如图1所示,该系统包括服务器101和多个终端102。图1中示例性地示出了两个终端,实际实现中,终端的数量不限于此。
其中,服务器101中包括代码池和依赖关系信息,代码池用于存储终端102上传的代码文件。依赖关系信息用于存储代码池中存储的每个代码文件的存储路径以及各代码文件之间的依赖关系。
在一种实施方式中,代码池和依赖关系信息可以分别部署于两个不同的服务器中101,图1中示例性地示出了一个包括代码池和依赖关系信息的服务器。
终端102中安装有工程客户端,工程客户端是为开发者提供的开发工具,与本地开发环境关联,可以以插件的形式安装在终端102中。工程客户端具体可以与git版本控制工具以及maven包管理工具相关联。其中,git为分布式版本控制系统,用于进行项目版本管理。
终端102可以向服务器101发布代码文件,也可以从服务器101中获取代码文件。
以下结合图1所示的系统对本申请实施例提供的代码共享方法进行详细介绍。
本申请实施例提供一种代码共享方法,该方法应用于服务器,服务器中存储多个代码文件以及各代码文件之间的依赖关系,如图2所示,该方法包括:
S201、接收终端发送的代码文件下载请求,代码文件下载请求用于请求下载指定代码文件。
S202、查找指定代码文件,以及指定代码文件的依赖代码文件,依赖代码文件为被指定代码文件调用的代码文件。
S203、向终端发送指定代码文件,以及指定代码文件的依赖代码文件,以使得终端将指定代码文件和指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
本申请实施例提供的代码共享方法,因服务器中存储了多个代码文件以及各代码文件之间的依赖关系,当服务器接收到终端发送的针对指定代码文件的代码文件下载请求时,可以为终端发送该指定代码文件以及指定代码文件的依赖代码文件。可见,终端可以按需请求下载开发过程中需要的指定代码文件,且服务器主动为终端提供指定代码文件所依赖的其他代码文件,实现了代码文件的动态打包。相比于相关技术,本申请实施例中终端无需获取所有的代码文件,且保证了服务器中存储的代码文件的高复用性,解决了由于common包臃肿导致的传输资源浪费的问题。
在上述S201中,代码文件下载请求中可以包括指定代码文件的文件标识。
在上述S202中,服务器可以基于指定代码文件的文件标识,查找指定代码文件。并根据服务器中存储的各代码文件之间的依赖关系,查找指定代码文件依赖的代码文件。
其中,指定代码文件依赖的代码文件包括指定代码文件直接调用的代码文件,还包括指定代码文件间接调用的代码文件。
例如,若指定代码文件A在运行过程中需要调用代码文件B,代码文件B在运行过程中需要调用代码文件C,则代码文件B为指定代码文件A直接调用的代码文件,代码文件C为指定代码文件A间接调用的代码文件。
在本申请的一个实施例中,如图3所示,上述S202、查找指定代码文件,以及指定代码文件的依赖代码文件,具体包括如下步骤:
S2021、查找指定代码文件。
S2022、查找指定代码文件直接依赖的第一级代码文件。
S2023、若查找到指定代码文件直接依赖的第一级代码文件,则查找第一级代码文件直接依赖的第二级代码文件。
S2024、依次查找每一级代码文件直接依赖的下一级代码文件,直至当前查找到的代码文件无下一级文件,将查找到所有代码文件作为指定代码文件的依赖代码文件。
采用该方法,服务器可以快捷地查找终端请求下载的指定代码文件的依赖代码文件,使得终端通过可以及时获取开发过程中需要复用的各代码文件,为开发人员的开发提供了便捷,且服务器无需向终端传输所有可以被复用的代码文件,而是可以查找到终端需要的代码文件,在保证代码文件的高复用的基础上,节约了传输资源和存储资源。
在本申请实施例中,服务器中具体包括代码池和依赖关系信息,代码池用于存储代码文件。针对每个代码文件,依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识。
在一种实施方式中,依赖关系信息中还包括代码文件的创建时间和更新时间。其中,代码文件的创建时间为服务器接收到该代码文件的时间。代码文件的更新时间为服务器接收到更新后的该代码文件的时间。
该依赖关系信息可以通过表格的形式存储,作为示例,依赖关系信息如表1所示。
表1
表1中的依赖关系一栏中的数据为代码文件直接依赖的代码文件的文件标识,比如代码文件E直接依赖的代码文件为代码文件C和D,代码文件C直接依赖的代码文件为代码文件A和B。代码文件D、A、B的依赖关系为空,代表代码文件D、A、B在执行过程中不需要调用其他代码文件。
此外,表1中代码文件D的创建时间为2020.6.1/10:00,且代码文件D在2020.6.1/11:20发生了更新。表1中的其余代码文件的更新时间为空,代表其余代码文件未发生过更新。在另一种实施方式中,若代码文件未发生过更新,也可以将代码文件的创建时间作为更新时间存储于表1中。比如,代码文件E的创建时间和更新时间均为2020.6.1/12:00。
根据表1中的依赖关系信息可知,各代码文件之间存在多重嵌套关系,该多重嵌套关系可以采用如图4所示的树形结构表示,所以本申请实施例中服务器存储表1所示的依赖关系信息相当于存储了各代码之间的多重嵌套关系,该多重嵌套关系可以为树形结构。
图4中,A.java、B.java、C.java、D.java、E.java分别代表代码文件A、B、C、D、E。
其中,E.java调用了C.java和D.java,可将E.java作为根节点,C.java和D.java为E.java的子节点。
C.java调用了A.java和B.java,可将A.java和B.java作为C.java的子节点。
假设本申请实施例中终端请求下载的指定代码文件为E.java,结合图4,对上述S2022-S2024进行举例说明。
在S2022中,可以查找E.java直接依赖的第一级代码文件,从图4中可以看出,E.java直接依赖的第一级代码文件包括C.java和D.java。
然后,在上述S2023中,分别查找C.java和D.java直接依赖的第二级代码文件。从图4中可以看出,D.java无直接依赖的第二级代码文件。C.java直接依赖的代码文件包括A.java和B.java。
则在上述S2024中,继续查找A.java和B.java直接依赖的下一级代码文件,经查找发现A.java和B.java均无直接依赖的代码文件,则查找过程结束,将A.java、B.java、C.java、D.java作为E.java依赖的代码文件。
在一种实施方式中,结合表1所示的依赖关系信息,上述S2022查找指定代码文件依赖的第一级代码文件,具体可以实现为:
从依赖关系信息中,查找指定代码文件的存储路径,基于指定代码文件的存储路径,从代码池中获取所述指定代码文件。
例如,指定代码文件为E.java,从表1中可以确定E.java在代码池中的存储路径为/data/commom_code_pool/XX/E.java,则可根据该存储路径,从代码池中快速查找到E.java。
上述S2023中,查找指定代码文件直接依赖的第一级代码文件具体可以实现为:从依赖关系信息中,查找指定代码文件直接依赖的第一级代码文件的文件标识。然后从依赖关系信息中,查找第一级代码文件的文件标识对应的存储路径。进而基于查找到的存储路径,从代码池中获取所述第一级代码文件。
例如,指定代码文件为E.java,从表1中可以确定E.java直接依赖的代码文件为C.java和D.java。
然后,从表1中可查找到C.java的存储路径为/data/commom_code_pool/XX/C.java,D.java的存储路径为/data/commom_code_pool/XX/D.java,则服务器可以根据上述两个存储路径分别从代码池中查找到C.java和D.java。
在一种实施方式中,本申请实施例提供的依赖关系信息的数据结构如表2所示。
表2
在一种实施方式中,代码文件的文件标识可以通过对代码文件在代码池中的存储路径进行信息摘要算法(Message Digest Algorithm MD5,MD5)得到。
在本申请另一实施例中,上述实施例中,服务器中存储的代码文件均为终端上传的共享代码文件,以下对服务器存储共享代码文件的方法进行介绍,该方法由服务器执行,如图5所示,该方法包括:
S501、接收终端上传的共享代码文件。
其中,终端上传共享代码文件时,还携带了XML格式的项目对象模型(ProjectObject Model,POM)文件,该文件名为pom.xml。pom.xml文件中包括共享代码文件的工程名信息。
作为示例,若共享代码文件在终端的本地开发环境中的工程代码路径如图6所示,则该共享代码文件的工程名为“HelloWord”,文件路径为“com.demo.Application”。
终端上传的共享代码文件中包括上述文件路径。上述pom.xml文件中包括如下字段:
<groupId>com.demo.</groupId>
<artifactId>HelloWord</artifactId>
<version>1.0-SNAPSHOT</version>
其中,“<groupId>com.demo.</groupId>”表示项目组的标识符为“com.demo.”。
“<artifactId>HelloWord</artifactId>”表示工程名为HelloWord。
<version>1.0-SNAPSHOT</version>表示项目的版本为1.0-SNAPSHOT。
S502、解析共享代码文件的工程名和文件路径。
服务器可以通过解析共享代码文件获取共享代码文件的文件路径为:com.demo.Application,并从上述pom.xml文件中获取共享代码文件的工程名为:HelloWord。
S503、基于工程名和文件路径确定共享代码文件在代码池中的存储路径。
结合S501和S502中的举例,服务器可以确定共享代码文件在代码池中的存储路径为:
“/data/common_code_pool/com.demo:HelloWord:1.0-SNAPSHOT/com/demo/Application.java”
其中,“/data/common_code_pool/”为固定的路径前缀,com.demo:HelloWord:1.0-SNAPSHOT为从上述pom.xml文件中读取的内容,com/demo/Application.java代表代码文件的文件路径。
S504、按照确定出的存储路径在代码池中存储共享代码文件。
S505、在依赖关系信息中存储所述共享代码文件的文件标识、存储路径以及直接依赖的代码文件的文件标识,以使得服务器通过依赖关系信息存储各代码文件之间的多重嵌套关系,该多重嵌套关系为树形结构。
在一种实施方式中,服务器可以通过解析该共享代码文件,确定该共享代码文件是否调用了其他代码文件,若该共享代码文件调用了其他的代码文件,则判断与该共享代码文件同一批被上传的其他代码文件中,是否包括该共享文件调用的代码文件,若与该共享代码文件同一批被上传的其他代码文件中包括该共享文件调用的代码文件,则在依赖关系信息中存储该共享文件直接依赖的代码文件的文件标识;若与该共享代码文件同一批被上传的其他代码文件中不包括该共享文件调用的代码文件,则服务器从自身的代码池中查找是否已存储该共享文件调用的代码文件。若服务器在自身的代码池中查找到该共享文件调用的代码文件,则在依赖关系信息中存储该共享文件直接依赖的代码文件的文件标识。若服务器在自身的代码池中未查找到该共享文件直接依赖的代码文件的文件标识,则服务器向终端返回上传错误响应,终端接收到上传错误响应后,可发出提示消息,提示用户本次上传共享代码文件失败。
在本申请另一实施例中,服务器还可以为终端提供各代码文件的更新时间,具体可以实现为:
服务器接收终端发送的用于请求获取终端已下载的各代码文件的更新时间的请求消息,然后从依赖关系信息中,获取终端已下载的各代码文件的更新时间。进而向终端发送所述终端已下载的各代码文件的更新时间。
对应于上述实施例,本申请实施例还提供一种代码共享方法,该方法应用于终端,如图7所示,该方法包括:
S701、向服务器发送代码文件下载请求,代码文件下载请求用于请求下载指定代码文件。
S702、接收服务器发送的指定代码文件,以及指定代码文件的依赖代码文件,依赖代码文件为指定代码文件调用的代码文件。
S703、将指定代码文件以及指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
本申请实施例提供的代码共享方法,当终端需要获取指定代码文件时,可以向服务器发送针对指定代码文件的代码文件下载请求,进而接收服务器发送该指定代码文件以及指定代码文件的依赖代码文件。可见,终端可以按需请求下载开发过程中需要的指定代码文件,且服务器主动为终端提供指定代码文件所依赖的其他代码文件,实现了代码文件的动态打包。相比于相关技术,本申请实施例中终端无需获取所有的代码文件,且保证了服务器中存储的代码文件的高复用性,解决了由于common包臃肿导致的传输资源浪费的问题。
在一种实施方式中,在上述S801,向服务器发送代码文件下载请求之前,该方法还包括:
终端展示服务器中存储的,且终端本地不存在的代码文件信息,并识别用户选择的代码文件,将用户选择的代码文件作为指定代码文件,生成代码文件下载请求。
其中,终端中具有展示界面,可以展示服务器的代码池中可供下载的代码文件信息。在一种实施方式中,因展示代码文件信息的目的为方便用户选择需要下载的代码文件,所以可以不展示终端已下载至本地的代码文件。
用户可以选择需要下载的代码文件,从而触发终端基于用户选择的代码文件生成代码文件下载请求,该代码文件下载请求中包括用户选择的代码文件的文件标识。
在上述S702中,终端接收到服务器发送的指定代码文件,以及指定代码文件的依赖代码文件之后,可以在本地工程目录新建模块,将指定代码文件以指定代码文件的每个依赖代码文件分别存储于不同的模块中,从而实现将下载代码文件与用户在本地编写的代码文件隔离的目的。
且终端可以将上述存储有代码文件的模块加入POM配置,并将这些模块与本地主工程关联,从而使得终端从服务器下载的代码文件与第三代码文件之间可以互相调用。
另外,终端还需将下载的各代码文件的存储地址加入gitignore文件,以使得除工程客户端之外的其他管理工具忽略终端下载的代码文件,避免多个不同的管理工具同时管理终端下载的代码文件,导致的冗余存储的问题。
在上述S703中,工程客户端与maven工具关联,maven工具用于进行jar包依赖管理以及工程打包操作。也就是说,maven工具可以对存储有终端下载的代码文件的模块进行打包操作,得到代码文件包(jar包),并将该代码文件包依赖到开发者的主工程。
在本申请实施例中,终端本地也存储有已下载的代码文件之间的依赖关系信息,依赖关系信息的存储形式与表1所示的存储形式相同。终端可以通过该依赖关系信息中的更新时间字段来确定自身存储的代码文件是否存在版本升级,从而决定是否重新向服务器请求获取版本升级后的代码文件。
基于上述目的,本申请实施例还提供了更新代码文件的方法,该方法由终端执行,如图8所示,该方法包括如下步骤:
S801、每隔指定时长,向服务器请求获取自身已下载的各代码文件的更新时间。
其中,因为终端也存储有依赖关系信息,所以终端可向服务器发送依赖关系信息中的各文件标识,服务器可从自身存储的依赖关系中查找接收到的各文件标识对应的更新时间,并将各文件标识对应的更新时间发送给终端。
S802、针对每个自身已下载的代码文件,基于该已下载的代码文件的时间戳和从服务器获取的该代码文件的更新时间,判断该已下载的代码文件是否发生版本更新。
终端接收到各文件标识对应的更新时间之后,可将接收到的各更新时间与自身存储的依赖关系信息中的更新时间进行对比,若终端接收到的某一文件标识对应的更新时间,与终端自身存储的该文件标识对应的更新时间不同,则可确定该文件标识所标识的代码文件发生了版本更新。
S803、若确定该已下载的代码文件发生版本更新,则向所述服务器请求下载该已下载的代码文件对应的更新后的代码文件。
S804、接收并存储所述服务器发送的更新后的代码文件。
其中,服务器还可以判断该更新后的代码文件的依赖代码文件是否也发生了版本更新,若依赖代码文件也存在版本更新,则服务器向终端发送更新后的代码文件和更新后的依赖文件,进而终端接收并存储该更新后的代码文件和更新后的依赖文件。
采用该方法,当服务器中的代码文件发生版本更新后,终端可以及时获取到更新后的代码文件,实现了更新后的代码文件的共享。
基于相同的发明构思,本申请实施例还提供一种代码共享装置,该装置应用于服务器,服务器中存储多个代码文件以及各代码文件之间的依赖关系,如图9所示,该装置包括:
接收模块901,用于接收终端发送的代码文件下载请求,代码文件下载请求用于请求下载指定代码文件;
查找模块902,用于查找指定代码文件,以及指定代码文件的依赖代码文件,依赖代码文件为被指定代码文件调用的代码文件;
发送模块903,用于向终端发送查找模块902查找到的指定代码文件,以及指定代码文件的依赖代码文件,以使得终端将指定代码文件和指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
可选地,查找模块902,具体用于:
查找指定代码文件;
查找指定代码文件直接依赖的第一级代码文件;
若查找到指定代码文件直接依赖的第一级代码文件,则查找第一级代码文件直接依赖的第二级代码文件;
依次查找每一级代码文件直接依赖的下一级代码文件,直至当前查找到的代码文件无下一级文件,将查找到所有代码文件作为指定代码文件的依赖代码文件。
可选地,服务器中包括代码池和依赖关系信息,代码池用于存储代码文件,针对每个代码文件,依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
查找模块902,具体用于:
从依赖关系信息中,查找指定代码文件的存储路径;
基于指定代码文件的存储路径,从代码池中获取指定代码文件;
查找指定代码文件直接依赖的第一级代码文件,包括:
从依赖关系信息中,查找指定代码文件直接依赖的第一级代码文件的文件标识;
从依赖关系信息中,查找第一级代码文件的文件标识对应的存储路径;
基于查找到的存储路径,从代码池中获取第一级代码文件。
可选地,该装置还包括:解析模块、确定模块和存储模块;
接收模块901,还用于接收终端上传的共享代码文件;
解析模块,用于解析共享代码文件的工程名和文件路径;
确定模块,基于工程名和文件路径确定共享代码文件在代码池中的存储路径;
存储模块,用于按照确定模块确定出的存储路径在代码池中存储共享代码文件;在依赖关系信息中存储共享代码文件的文件标识、存储路径以及直接依赖的代码文件的文件标识,以使得存储模块通过依赖关系信息存储各代码文件之间的多重嵌套关系,所述多重嵌套关系为树形结构。
可选地,依赖关系信息中还包括共享代码文件的创建时间和更新时间;
存储模块,还用于:
将接收模块接收到共享代码文件的时间作为共享代码文件的创建时间,在依赖关系信息中存储共享代码文件的创建时间;
若接收到更新后的共享代码文件,则将更新后的共享代码文件覆盖代码池中存储的共享代码文件;
将接收到更新后的共享代码文件的时间作为共享代码文件的更新时间,在依赖关系信息中存储共享代码文件的更新时间。
可选地,该装置还包括:获取模块;
接收模块901,用于接收终端发送的用于请求获取终端已下载的各代码文件的更新时间的请求消息;
获取模块,用于从依赖关系信息中,获取终端已下载的各代码文件的更新时间;
发送模块903,还用于向终端发送终端已下载的各代码文件的更新时间。
基于相同的发明构思,本申请实施例提供另一种代码共享装置,该装置应用于终端,如图10所示,该装置包括:
发送模块1001,用于向服务器发送代码文件下载请求,代码文件下载请求用于请求下载指定代码文件;
接收模块1002,用于接收服务器发送的指定代码文件,以及指定代码文件的依赖代码文件,依赖代码文件为指定代码文件调用的代码文件;
打包模块1003,用于将指定代码文件以及指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包。
可选地,该装置还包括:
展示模块,用于展示服务器中存储的代码文件信息;
生成模块,用于识别用户选择的代码文件,将用户选择的代码文件作为指定代码文件,生成代码文件下载请求。
可选地,该装置还包括:
请求模块,用于每隔指定时长,向服务器请求获取自身已下载的各代码文件的更新时间;
判断模块,用于针对每个自身已下载的代码文件,基于该已下载的代码文件的时间戳和从服务器获取的该代码文件的更新时间,判断该已下载的代码文件是否发生版本更新;
请求模块,还用于若确定该已下载的代码文件发生版本更新,则向服务器请求下载该已下载的代码文件对应的更新后的代码文件;
接收模块1002,还用于接收并存储服务器发送的更新后的代码文件。
本申请实施例还提供了一种电子设备,该电子设备可以为上述服务器或者为上述终端,如图11所示,包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101,通信接口1102,存储器1103通过通信总线1104完成相互间的通信,
存储器1103,用于存放计算机程序;
处理器1101,用于执行存储器1103上所存放的程序时,实现上述方法实施例中的方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的代码共享方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的代码共享方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、服务器、终端及介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种代码共享方法,其特征在于,所述方法应用于服务器,所述服务器中存储多个代码文件以及各代码文件之间的依赖关系,所述方法包括:
接收终端发送的代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
查找所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为被所述指定代码文件调用的代码文件;
向所述终端发送所述指定代码文件,以及所述指定代码文件的依赖代码文件,以使得所述终端将所述指定代码文件和所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包;
所述查找所述指定代码文件,以及所述指定代码文件的依赖代码文件,包括:
查找所述指定代码文件;
查找所述指定代码文件直接依赖的第一级代码文件;
若查找到所述指定代码文件直接依赖的第一级代码文件,则查找所述第一级代码文件直接依赖的第二级代码文件;
依次查找每一级代码文件直接依赖的下一级代码文件,直至当前查找到的代码文件无下一级文件,将查找到所有代码文件作为所述指定代码文件的依赖代码文件;
所述服务器中包括代码池和依赖关系信息,所述代码池用于存储代码文件,针对每个代码文件,所述依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在所述代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
所述查找所述指定代码文件,包括:
从所述依赖关系信息中,查找所述指定代码文件的存储路径;
基于所述指定代码文件的存储路径,从所述代码池中获取所述指定代码文件;
所述查找所述指定代码文件直接依赖的第一级代码文件,包括:
从所述依赖关系信息中,查找所述指定代码文件直接依赖的第一级代码文件的文件标识;
从所述依赖关系信息中,查找所述第一级代码文件的文件标识对应的存储路径;
基于查找到的存储路径,从所述代码池中获取所述第一级代码文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收终端上传的共享代码文件;
解析所述共享代码文件的工程名和文件路径;
基于所述工程名和所述文件路径确定所述共享代码文件在所述代码池中的存储路径;
按照确定出的存储路径在所述代码池中存储所述共享代码文件;
在依赖关系信息中存储所述共享代码文件的文件标识、存储路径以及直接依赖的代码文件的文件标识,以使得所述服务器通过依赖关系信息存储各代码文件之间的多重嵌套关系,所述多重嵌套关系为树形结构。
3.根据权利要求2所述的方法,其特征在于,所述依赖关系信息中还包括所述共享代码文件的创建时间和更新时间;在所述接收终端上传的共享代码文件之后,所述方法还包括:
将接收到所述共享代码文件的时间作为所述共享代码文件的创建时间,在所述依赖关系信息中存储所述共享代码文件的创建时间;
若接收到更新后的所述共享代码文件,则将更新后的所述共享代码文件覆盖所述代码池中存储的所述共享代码文件;
将接收到更新后的所述共享代码文件的时间作为所述共享代码文件的更新时间,在所述依赖关系信息中存储所述共享代码文件的更新时间。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收所述终端发送的用于请求获取所述终端已下载的各代码文件的更新时间的请求消息;
从所述依赖关系信息中,获取所述终端已下载的各代码文件的更新时间;
向所述终端发送所述终端已下载的各代码文件的更新时间。
5.一种代码共享方法,其特征在于,所述方法应用于终端,所述方法包括:
向服务器发送代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
接收所述服务器发送的所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为所述指定代码文件调用的代码文件;
将所述指定代码文件以及所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包;
所述依赖代码文件包括所述服务器查找到的与所述指定代码文件直接依赖的第一级代码文件,与所述第一级代码文件直接依赖的第二级代码文件,以及所述服务器依次查找到的与每一级代码文件直接依赖的下一级代码文件;
所述服务器中包括代码池和依赖关系信息,所述代码池用于存储代码文件,针对每个代码文件,所述依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在所述代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
所述指定代码文件为所述服务器从所述依赖关系信息中,查找所述指定代码文件的存储路径后,基于所述指定代码文件的存储路径,从所述代码池中获取的代码文件;
所述第一级代码文件为所述服务器从所述依赖关系信息中,查找所述指定代码文件直接依赖的第一级代码文件的文件标识后,再从所述依赖关系信息中,查找所述第一级代码文件的文件标识对应的存储路径,然后基于查找到的存储路径,从所述代码池中获取的代码文件。
6.根据权利要求5所述的方法,其特征在于,在所述向服务器发送代码文件下载请求之前,所述方法还包括:
展示所述服务器中存储的代码文件信息;
识别用户选择的代码文件,将所述用户选择的代码文件作为所述指定代码文件,生成所述代码文件下载请求。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
每隔指定时长,向服务器请求获取自身已下载的各代码文件的更新时间;
针对每个自身已下载的代码文件,基于该已下载的代码文件的时间戳和从所述服务器获取的该代码文件的更新时间,判断该已下载的代码文件是否发生版本更新;
若确定该已下载的代码文件发生版本更新,则向所述服务器请求下载该已下载的代码文件对应的更新后的代码文件;
接收并存储所述服务器发送的更新后的代码文件。
8.一种代码共享装置,其特征在于,所述装置应用于服务器,所述服务器中存储多个代码文件以及各代码文件之间的依赖关系,所述装置包括:
接收模块,用于接收终端发送的代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
查找模块,用于查找所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为被所述指定代码文件调用的代码文件;
发送模块,用于向所述终端发送所述查找模块查找到的指定代码文件,以及所述指定代码文件的依赖代码文件,以使得所述终端将所述指定代码文件和所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包;
所述查找模块,具体用于:
查找所述指定代码文件;
查找所述指定代码文件直接依赖的第一级代码文件;
若查找到所述指定代码文件直接依赖的第一级代码文件,则查找所述第一级代码文件直接依赖的第二级代码文件;
依次查找每一级代码文件直接依赖的下一级代码文件,直至当前查找到的代码文件无下一级文件,将查找到所有代码文件作为所述指定代码文件的依赖代码文件;
所述所述服务器中包括代码池和依赖关系信息,所述代码池用于存储代码文件,针对每个代码文件,所述依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在所述代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
所述查找模块,具体用于:
从所述依赖关系信息中,查找所述指定代码文件的存储路径;
基于所述指定代码文件的存储路径,从所述代码池中获取所述指定代码文件;
所述查找模块,具体用于:
从所述依赖关系信息中,查找所述指定代码文件直接依赖的第一级代码文件的文件标识;
从所述依赖关系信息中,查找所述第一级代码文件的文件标识对应的存储路径;
基于查找到的存储路径,从所述代码池中获取所述第一级代码文件。
9.一种代码共享装置,其特征在于,所述装置应用于终端,所述装置包括:
发送模块,用于向服务器发送代码文件下载请求,所述代码文件下载请求用于请求下载指定代码文件;
接收模块,用于接收所述服务器发送的所述指定代码文件,以及所述指定代码文件的依赖代码文件,所述依赖代码文件为所述指定代码文件调用的代码文件;
打包模块,用于将所述指定代码文件以及所述指定代码文件的依赖代码文件打包,得到用于服务开发的代码文件包;
所述依赖代码文件包括所述服务器查找到的与所述指定代码文件直接依赖的第一级代码文件,与所述第一级代码文件直接依赖的第二级代码文件,以及所述服务器依次查找到的与每一级代码文件直接依赖的下一级代码文件;
所述服务器中包括代码池和依赖关系信息,所述代码池用于存储代码文件,针对每个代码文件,所述依赖关系信息中对应存储有该代码文件的文件标识、该代码文件在所述代码池中的存储路径、该代码文件直接依赖的代码文件的文件标识;
所述指定代码文件为所述服务器从所述依赖关系信息中,查找所述指定代码文件的存储路径后,基于所述指定代码文件的存储路径,从所述代码池中获取的代码文件;
所述第一级代码文件为所述服务器从所述依赖关系信息中,查找所述指定代码文件直接依赖的第一级代码文件的文件标识后,再从所述依赖关系信息中,查找所述第一级代码文件的文件标识对应的存储路径,然后基于查找到的存储路径,从所述代码池中获取的代码文件。
10.一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
11.一种终端,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求5-7任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4或5-7任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043970.1A CN112114871B (zh) | 2020-09-28 | 2020-09-28 | 一种代码共享方法、装置、服务器、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043970.1A CN112114871B (zh) | 2020-09-28 | 2020-09-28 | 一种代码共享方法、装置、服务器、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112114871A CN112114871A (zh) | 2020-12-22 |
CN112114871B true CN112114871B (zh) | 2023-09-05 |
Family
ID=73797310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011043970.1A Active CN112114871B (zh) | 2020-09-28 | 2020-09-28 | 一种代码共享方法、装置、服务器、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114871B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560618B1 (en) * | 2000-03-22 | 2003-05-06 | International Business Machines Corporation | On-demand generation, packaging, and delivery of archive files |
CN105049532A (zh) * | 2015-08-28 | 2015-11-11 | 北京奇艺世纪科技有限公司 | 一种sdk包的打包方法及装置和下载方法及装置 |
US9367554B1 (en) * | 2015-09-14 | 2016-06-14 | Atlassian Pty Ltd | Systems and methods for enhancing performance of a clustered source code management system |
CN106843820A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 代码处理方法和装置 |
CN109725909A (zh) * | 2018-05-07 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 代码文件打包部署方法、持续集成服务器及系统 |
CN109799970A (zh) * | 2018-12-06 | 2019-05-24 | 珠海西山居移动游戏科技有限公司 | 一种资源引用关系生成方法及系统 |
CN110704096A (zh) * | 2019-09-12 | 2020-01-17 | 北京达佳互联信息技术有限公司 | 前端项目的打包方法、装置、存储介质及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577939B2 (en) * | 2003-06-27 | 2009-08-18 | International Business Machines Corporation | Method, system and program product for sharing source code over a network |
US7886267B2 (en) * | 2006-09-27 | 2011-02-08 | Symantec Corporation | Multiple-developer architecture for facilitating the localization of software applications |
CN103685337B (zh) * | 2012-08-31 | 2018-03-27 | 腾讯科技(深圳)有限公司 | 共享文件的方法、终端设备及中转服务器 |
US10768925B2 (en) * | 2015-06-01 | 2020-09-08 | Microsoft Technology Licensing, Llc | Performing partial analysis of a source code base |
US10169018B2 (en) * | 2015-09-17 | 2019-01-01 | International Business Machines Corporation | Downloading a package of code |
-
2020
- 2020-09-28 CN CN202011043970.1A patent/CN112114871B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560618B1 (en) * | 2000-03-22 | 2003-05-06 | International Business Machines Corporation | On-demand generation, packaging, and delivery of archive files |
CN105049532A (zh) * | 2015-08-28 | 2015-11-11 | 北京奇艺世纪科技有限公司 | 一种sdk包的打包方法及装置和下载方法及装置 |
US9367554B1 (en) * | 2015-09-14 | 2016-06-14 | Atlassian Pty Ltd | Systems and methods for enhancing performance of a clustered source code management system |
CN106843820A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 代码处理方法和装置 |
CN109725909A (zh) * | 2018-05-07 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 代码文件打包部署方法、持续集成服务器及系统 |
CN109799970A (zh) * | 2018-12-06 | 2019-05-24 | 珠海西山居移动游戏科技有限公司 | 一种资源引用关系生成方法及系统 |
CN110704096A (zh) * | 2019-09-12 | 2020-01-17 | 北京达佳互联信息技术有限公司 | 前端项目的打包方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112114871A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628661B (zh) | 云制造服务的自动建置方法、云制造系统 | |
US8543543B2 (en) | Hash-based file comparison | |
CN110636093B (zh) | 微服务注册和发现方法、设备、存储介质以及微服务系统 | |
CN111399756B (zh) | 一种数据存储方法、数据下载方法及装置 | |
CN106598673B (zh) | 一种应用程序升级方法及系统 | |
CN106569880B (zh) | 一种Android应用间动态共享资源的方法及系统 | |
US11328021B2 (en) | Automatic resource management for build systems | |
CN104320312A (zh) | 网络应用安全测试工具及模糊测试用例生成方法和系统 | |
US11893367B2 (en) | Source code conversion from application program interface to policy document | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
CN114328097A (zh) | 一种文件监控方法、装置、电子设备和存储介质 | |
US8095625B2 (en) | Directory server plug-in call ordering | |
CN112114871B (zh) | 一种代码共享方法、装置、服务器、终端及介质 | |
CN112698930A (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
CN116414774A (zh) | 文件迁移方法、装置、设备及存储介质 | |
CN110795646A (zh) | 请求处理方法、装置、电子设备和计算机可读存储介质 | |
CN113535160B (zh) | 应用模块复用的方法、装置、系统、电子装置和存储介质 | |
CN112084006B (zh) | 一种镜像包处理方法、装置及电子设备 | |
WO2016165468A1 (zh) | 一种管理应用系统的方法、装置和系统 | |
US20220283789A1 (en) | Methods and apparatuses for providing a function as a service platform | |
CN111367634A (zh) | 信息处理方法、信息处理装置及终端设备 | |
CN114928556B (zh) | 接口服务的测试方法及相关设备 | |
CN112084003B (zh) | 一种隔离数据的方法、装置、介质和电子设备 | |
CN113535140B (zh) | 一种参数封装方法、装置、设备及存储介质 | |
CN110032406B (zh) | 基于消息的视图加载方法、装置、设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |