CN113268224B - Maven仓库的Jar包缓存方法、装置及计算机设备 - Google Patents

Maven仓库的Jar包缓存方法、装置及计算机设备 Download PDF

Info

Publication number
CN113268224B
CN113268224B CN202110628498.6A CN202110628498A CN113268224B CN 113268224 B CN113268224 B CN 113268224B CN 202110628498 A CN202110628498 A CN 202110628498A CN 113268224 B CN113268224 B CN 113268224B
Authority
CN
China
Prior art keywords
target
java
project
party jar
package
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
Application number
CN202110628498.6A
Other languages
English (en)
Other versions
CN113268224A (zh
Inventor
周果
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Shuhe Information Technology Co Ltd
Original Assignee
Shanghai Shuhe Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Shuhe Information Technology Co Ltd filed Critical Shanghai Shuhe Information Technology Co Ltd
Priority to CN202110628498.6A priority Critical patent/CN113268224B/zh
Publication of CN113268224A publication Critical patent/CN113268224A/zh
Application granted granted Critical
Publication of CN113268224B publication Critical patent/CN113268224B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种Maven仓库的Jar包缓存方法、装置、计算机设备和存储介质,所述方法包括:在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息;根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包;将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包;将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。上述方法能够缩短Java项目的项目构建时间以提高Java项目的项目构建效率。

Description

Maven仓库的Jar包缓存方法、装置及计算机设备
技术领域
本申请涉及数据缓存技术领域,特别是涉及一种Maven仓库的Jar包缓存方法、装置、计算机设备和存储介质。
背景技术
当前在构建Java项目时,通常会引用很多第三方Jar包,此时一般会使用Maven工具辅助管理这些第三方Jar包。具体地,构建Java项目过程中,在执行Java项目的项目编译时,Maven工具会根据Java项目的pom.xml文件中定义的第三方Jar包的信息到远程Maven仓库拉取这些第三方Jar包至本地Maven仓库,进而才能进行Java项目的项目编译。
然而,Maven工具在拉取第三方Jar包时,根据Java项目的pom.xml文件中定义的每个第三方Jar包的信息采用单个下载的方式从远程Maven仓库下载第三方Jar包,因此增加了Java项目的项目构建时间,导致Java项目的项目构建效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够缩短Java项目的项目构建时间以提高Java项目的项目构建效率的Maven仓库的Jar包缓存方法、装置、计算机设备和存储介质。
一种Maven仓库的Jar包缓存方法,包括:在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,服务器节点具备独立的虚拟操作系统且服务器节点用于构建目标Java项目;根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包;将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包;将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。
在其中一个实施例中,共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出各Java项目依赖的第三方Jar包文件的压缩包,多个Java项目中包含目标Java项目。
在其中一个实施例中,一种Maven仓库的Jar包缓存方法还包括:创建具备独立的虚拟操作系统的服务器节点,以使用服务器节点构建目标Java项目;在服务器节点中创建本地Maven仓库;在服务器节点中创建Maven工具,Maven工具用于管理本地Maven仓库中的多个第一目标第三方Jar包。
在其中一个实施例中,将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库之后,还包括:通过服务器节点执行目标Java项目的项目构建;在项目构建的项目编译时,若Maven工具检测到本地Maven仓库中未缓存有目标Java项目依赖的第二目标第三方Jar包,则通过Maven工具从远程Maven仓库获取第二目标第三方Jar包,并将第二目标第三方Jar包缓存到本地Maven仓库,以使得服务器节点根据本地Maven仓库中的第二目标第三方Jar包以及第一目标第三方Jar包执行项目编译。
在其中一个实施例中,一种Maven仓库的Jar包缓存方法还包括:在项目编译结束后,将本地Maven仓库中的第三方Jar包文件进行打包后上传到共享文件系统。
在其中一个实施例中,将本地Maven仓库中的第三方Jar包文件进行打包,包括:从本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;将待上传的第三方Jar包进行打包。
在其中一个实施例中,一种Maven仓库的Jar包缓存方法还包括:当确定服务器节点结束目标Java项目的项目构建时,销毁服务器节点。
一种Maven仓库的Jar包缓存装置,包括:获取模块,用于在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,服务器节点具备独立的虚拟操作系统且服务器节点用于构建目标Java项目;下载模块,用于根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包;解压模块,用于将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包;缓存模块,用于将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述Maven仓库的Jar包缓存方法、装置、计算机设备和存储介质,在服务器节点接收到目标Java项目的构建指令时,通过目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包,进而将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包,将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库。因此,服务器节点在构建目标Java项目时,执行项目编译之前,通过打包下载的方式从共享文件系统下载目标Java项目依赖的多个第一目标第三方Jar包,与传统采用Maven工具按照单个第三方Jar包下载的方式从远程Maven仓库拉取第一目标第三方Jar包相比,提高了第一目标第三方Jar包的下载速度,进而缩短了目标Java项目的项目构建的构建时间,提高目标Java项目的项目构建效率。
附图说明
图1为一个实施例中一种Maven仓库的Jar包缓存方法的应用环境图;
图2为一个实施例中一种Maven仓库的Jar包缓存方法的流程示意图;
图3为一具体实施例中一种Maven仓库的Jar包缓存方法的流程示意图;
图4为一个实施例中一种Maven仓库的Jar包缓存方法的实践效果的显示示意图;
图5为一个实施例中一种Maven仓库的Jar包缓存装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种Maven仓库的Jar包缓存方法,应用于如图1所示的应用环境中。如图1所示,服务器102用于实现本申请的一种Maven仓库的Jar包缓存方法。具体地,在服务器102创建有服务器节点104,通过服务器节点104实现一种Maven仓库的Jar包缓存方法。其中,服务器节点104具备独立的虚拟操作系统且用于构建目标Java项目并在构建目标Java项目时使用Maven工具1042管理目标Java项目依赖的第三方Jar包。如,Maven工具1042根据目标Java项目中的pom.xml文件中定义的第三方Jar包信息到远程Maven仓库中拉取第三方Jar包至本地Maven仓库1044,进而服务器节点104进行目标Java项目的项目编译。
本申请中,服务器节点104用于实现本地Maven仓库的Jar包缓存。具体地,在服务器节点104接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,通过目标Java项目的标识信息从共享文件系统106中下载目标Java项目依赖的第三方Jar包文件的压缩包。将压缩包通过文件解压单元1046进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包,将多个第一目标第三方Jar包缓存到本地Maven仓库1044,以使得服务器节点104根据本地Maven仓库1044的多个第一目标第三方Jar包执行项目构建。因此,服务器节104点在构建目标Java项目时,执行项目编译之前,通过打包下载的方式从共享文件系统106下载目标Java项目依赖的多个第一目标第三方Jar包,与传统采用Maven工具按照单个第三方Jar包下载的方式从远程Maven仓库拉取第一目标第三方Jar包相比,提高了第一目标第三方Jar包的下载速度,进而缩短了目标Java项目的项目构建的构建时间,提高目标Java项目的项目构建效率。
在一个实施例中,如图2所示,提供了一种Maven仓库的Jar包缓存方法,以该方法应用于图1中的服务器102为例进行说明,包括以下步骤:
S202,在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,服务器节点具备独立的虚拟操作系统且服务器节点用于构建目标Java项目。
本实施例中,构建目标Java项目之前,在服务器中创建服务器节点。该服务器节点是一个独立的轻量级的虚拟操作系统且用于构建目标Java项目。该服务器节点构建目标Java项目时使用Maven工具管理目标Java项目依赖的第三方Jar包。由于服务器节点为新建的虚拟操作系统,因此其磁盘内容为全新,其本地Maven仓库的内容也为空,需要在本地Maven仓库中缓存目标Java项目依赖的多个第三方Jar包。
具体地,服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息。其中,目标Java项目的构建指令用于指示服务器节点执行目标Java项目的项目构建,目标Java项目的标识信息用于唯一标识出目标Java项目。获取目标Java项目的标识信息的方式可以是:接收目标Java项目的项目信息,从项目信息中读取出目标Java项目的标识信息。目标Java项目的标识信息可以是目标Java项目的项目名称。
S204,根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包。
本实施例中,共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出各Java项目依赖的第三方Jar包文件的压缩包,多个Java项目中包含目标Java项目。例如,共享文件系统将各Java项目依赖的第三方Jar包文件的压缩包进行隔离存储。共享文件系统中设置有公共共享目录,公共共享目录中记录有各Java项目的标识信息,通过各Java项目的标识信息可从共享文件系统获取对应的第三方Jar包文件的压缩包。
服务器节点与共享文件系统进行数据通信,向共享文件系统发送携带目标Java项目的标识信息的压缩包下载请求。共享文件系统接收压缩包下载请求,并根据目标Java项目的标识信息向服务器节点反馈目标Java项目依赖的第三方Jar包文件的压缩包。其中,目标Java项目依赖的第三方Jar包文件的压缩包通过将目标Java项目依赖的多个第一目标第三方Jar包的文件打包得到。
因此,通过打包下载的方式从共享文件系统下载目标Java项目依赖的多个第一目标第三方Jar包,与传统采用Maven工具按照单个第三方Jar包下载的方式从远程Maven仓库拉取第一目标第三方Jar包相比,提高了第一目标第三方Jar包的下载速度。
S206,将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包。
本实施例中,服务器节点根据压缩包的格式对压缩包进行解压,得到包含目标Java项目依赖的多个第一目标第三方Jar包的文件,进而从该文件中得到多个第一目标第三方Jar包。第一目标第三方Jar包可以是稳定的不随项目变更而更新的第三方Jar包。如,各个Java项目的项目构建时依赖的基础的第三方Jar包。
此处需要说明的是,当执行目标Java项目的项目编译时,Maven工具会根据目标Java项目中的pom.xml文件中定义的第三方Jar包信息到远程Maven仓库中拉取对应的第三方Jar包至本地Maven仓库,然后才能进行目标Java项目的编译。然而部分第三方Jar包一般是稳定的并不需要每次从远程Maven仓库中获取,所以Maven工具会根据本地Maven仓库中是否存在该第三方Jar包来决定是否去远程Maven仓库获取。因此,服务器节点在执行目标Java项目的项目编译之前,通过打包下载的方式获得不随项目变更而更新的多个第一目标第三方Jar包,无需在执行目标Java项目的项目编译时通过Maven工具逐个从远程Maven仓库下载多个第一目标第三方Jar包,从而能够缩短目标Java项目的构建时间。
S208,将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。
本实施例中,服务器节点将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库。服务器节点执行目标Java项目的项目构建的项目编译时,由于执行目标Java项目的项目编译之前,服务器节点已从共享文件系统下载目标Java项目依赖的第三方Jar包文件的压缩包,并将压缩包的多个第一目标第三方Jar包缓存到本地Maven仓库,因此当服务器节点执行目标Java项目的项目编译时,无需Maven工具从远程Maven仓库逐个获取第一目标第三方Jar包,从而缩短了目标Java项目的项目构建的构建时间。
上述Maven仓库的Jar包缓存方法,在服务器节点接收到目标Java项目的构建指令时,通过目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包,进而将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包,将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库。因此,服务器节点在构建目标Java项目时,执行项目编译之前,通过打包下载的方式从共享文件系统下载目标Java项目依赖的多个第一目标第三方Jar包,与传统采用Maven工具按照单个第三方Jar包下载的方式从远程Maven仓库拉取第一目标第三方Jar包相比,提高了第一目标第三方Jar包的下载速度,进而缩短了目标Java项目的项目构建的构建时间,提高目标Java项目的项目构建效率。
在一个实施例中,上述在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息的步骤之前,还包括步骤:创建具备独立的虚拟操作系统的服务器节点,以使用服务器节点构建目标Java项目;在服务器节点中创建本地Maven仓库;在服务器节点中创建Maven工具,Maven工具用于管理本地Maven仓库中的多个第一目标第三方Jar包。
该实施例中,创建具备独立的虚拟操作系统的服务器节点,在服务器节点中创建Maven工具以及本地Maven仓库。服务器节点在构建目标Java项目时使用Maven工具管理目标Java项目依赖的第三方Jar包。如,Maven工具根据目标Java项目中的pom.xml文件中定义的第三方Jar包信息到远程Maven仓库中拉取第三方Jar包至本地Maven仓库,进而服务器节点根据本地Maven仓库中的第三方Jar包进行目标Java项目的项目编译,从而实现目标Java项目的项目构建。例如,构建目标Java项目之前,在jenkins服务器中安装K8s插件,在目标Java项目构建时新建一个服务器节点,该服务器节点可以是独立的虚拟操作系统,并且该服务器节点安装了Maven工具且拥有独立的文件系统,如本地Maven仓库。因此,实现了服务器中目标Java项目构建的隔离,使服务器中目标Java项目与其他Java项目的项目构建互相不影响。
在生产环境中,应尽可能地控制各个Java项目之间的项目构建互不影响,同时同Java项目的每次项目构建也相互不影响。同Java项目的每次项目构建互不影响可以通过每次为Java项目的项目构建申请新的工作空间或者新的磁盘空间,但是Maven工具是操作系统共享的工具,它的本地Maven仓库地址是唯一的。例如多个Java项目使用同一个Jenkins服务器进行项目构建,这个Jenkins服务器的本地Maven仓库是固定的,导致这个本地Maven仓库里面包含了所有Java项目的第三方Jar包,因此此种方式也无法控制各个Java项目之间的项目构建互不影响以及同Java项目的每次构建互不影响。
该实施例中,通过创建具备独立的虚拟操作系统的服务器节点,在服务器节点中创建Maven工具以及本地Maven仓库,使用独立的服务器节点实现目标Java项目的项目构建,从而将服务器中目标Java项目的项目构建与其他Java项目的项目构建进行隔离,实现Java项目之间的项目构建互不影响。
在一个实施例中,上述将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库的步骤之后,还包括步骤:通过服务器节点执行目标Java项目的项目构建;在项目构建的项目编译时,若Maven工具检测到本地Maven仓库中未缓存有目标Java项目依赖的第二目标第三方Jar包,则通过Maven工具从远程Maven仓库获取第二目标第三方Jar包,并将第二目标第三方Jar包缓存到本地Maven仓库,以使得服务器节点根据本地Maven仓库中的第二目标第三方Jar包以及第一目标第三方Jar包执行项目编译。
该实施例中,第二目标第三方Jar包与第一目标第三方Jar包不相同。可以是,第一目标第三方Jar包为不因Java项目变更而更新的Jar包,第二目标第三方Jar包为需要基于目标Java项目而进行具体更新的Jar包。也即是,服务器节点从共享文件系统下载不因Java项目变更而更新的的多个第一目标第三方Jar包并将其缓存到本地Maven仓库。此外,通过Maven工具从Maven远程仓库获取需要基于目标Java项目而进行具体更新的第二目标第三方Jar包。因此,可将目标Java项目依赖的稳定的第三方Jar包进行提前缓存,执行项目编译时只需Maven工具从Maven远程仓库获取因具体Java项目而更新的第三方Jar包即可,从而能够缩短目标Java项目的项目构建的构建时间。
在一个实施例中,上述通过服务器节点执行目标Java项目的项目构建的步骤之后,还包括步骤:在项目编译结束后,将本地Maven仓库中的第三方Jar包文件进行打包后上传到共享文件系统。
该实施例中,服务器节点监测目标Java项目的项目编译。当目标Java项目的项目编译结束时,将本地Maven仓库中的第三方Jar包文件进行打包后上传到共享文件系统。具体地,当目标Java项目的项目编译结束时,本地Maven仓库中的第三方Jar包文件内包含多个第三方Jar包。多个第三方Jar包可以包括项目编译之前缓存在本地Maven仓库中的第三方Jar包以及项目编译产生的第三方Jar包。如,多个第三方Jar包可以包括第一目标第三方Jar包、第二目标第三方Jar包以及第三目标第三方Jar包,第三目标第三方Jar包为执行项目编译时产生的第三方Jar包。
服务器节点将本地Maven仓库中的第三方Jar包文件进行打包后,将打包得到的压缩包标注上目标Java项目的标识信息,将携带目标Java项目的标识信息的压缩包上传到共享文件系统,以由共享文件系统对该压缩包进行隔离存储,从而使得其他设备在构建目标Java项目时能够从共享文件系统中下载本服务器节点构建目标Java项目时产生的相关文件内容,实现目标Java项目的内容共享。
在一个实施例中,上述将本地Maven仓库中的第三方Jar包文件进行打包,包括:从本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;将待上传的第三方Jar包进行打包。
该实施例中,目标Java项目的项目编译完成后,服务器节点识别本地Maven仓库中无需上传到共享文件系统的第三方Jar包以及需要上传到共享文件系统的第三方Jar包,将需要上传到共享文件系统的第三方Jar包进行文件打包后上传至共享文件系统。其中,需要上传到共享文件系统的第三方Jar包为待上传的第三方Jar包,待上传的第三方Jar包为不因Java项目变更而更新的Jar包。例如,待上传的第三方Jar包为稳定的无需根据Java项目变更而更新的Jar包。无需上传到共享文件系统的第三方Jar包为根据Java项目变更而更新的Jar包。因此,可实现Java项目构建时将不因Java项目变更而更新的Jar包进行内容共享。
在一个实施例中,上述通过服务器节点执行目标Java项目的项目构建的步骤之后,还包括:当确定服务器节点结束目标Java项目的项目构建时,销毁服务器节点。
该实施例中,当服务器节点结束目标Java项目的构建时,销毁服务器节点,从而能够减少服务器的系统空间的浪费,增加服务器的运行空间。
为了进一步详细说明上述各个实施例所述的一种Maven仓库的Jar包缓存方法,以下给出一具体实施例:
每次Java项目构建均在服务器中创建一个构建的服务器节点。例如jenkins服务器中安装K8s插件,该K8s插件会在Java项目构建时创建一个服务器节点,该服务器节点的磁盘内容为全新的,因此服务器节点的本地Maven仓库的内容是空的。为了解决这个问题,可以在Java项目构建之前,先去共享文件系统下载本次Java项目依赖的第三方Jar包文件。共享文件系统中,每个Java项目的第三方Jar包文件均隔离存储。其中,第三方Jar包文件的打包下载,相对于Maven工具的单独第三方Jar包下载而言,其第三方Jar包下载更快。在Java项目构建完成后将本地Maven仓库中的第三方Jar包打包并上传至共享文件系统中单独存储,做到第三方Jar包的定期更新。具体流程参见图3所示,包括以下步骤:
1、创建一个构建Java项目的服务器节点,该服务器节点是一个轻量级的虚拟操作系统,该服务器节点的磁盘内容也是全新的,它的本地Maven仓库的内容是空的。该步骤主要目的是隔离项目构建,使Java项目构建互相不影响。
2、从共享文件系统下载该Java项目依赖的所有第三方Jar包文件的压缩包,得到Java项目的第三方依赖内容。其中下载的压缩包为所有第三方Jar包文件的压缩包,与Maven工具下载第三方Jar包的方式相比,以压缩包的方式下载第三方Jar包的方式更快。由于Maven工具只能按照单个第三方Jar包来下载,每个第三方Jar包都要建立连接并下载等,然而每个Java项目依赖的第三方Jar包都是几十或上百个,因此通过下载所有第三方Jar包文件的压缩包的方式获得Java项目依赖的第三方Jar包,可以提高第三方Jar包的下载速度。
3、解压第三方Jar包文件的压缩包至本地Maven仓库。Maven工具检测到本地Maven仓库已存在的第三方Jar包,那么在Java项目构建时不会再去远程Maven仓库下载。
4、Maven工具会去下载Java项目依赖的并且本地Maven仓库不存在的第三方Jar包文件至本地Maven仓库,等所有依赖的第三方Jar包都下载完毕后,服务器节点会进行项目编译工作。
5、项目编译完成后,服务器节点将本地Maven仓库的第三方Jar包文件压缩,排除不需要上传的第三方Jar包文件,然后上传至共享文件系统。
使用本申请的一种Maven仓库的Jar包缓存方法,能有效节省Java项目构建时间,具体实践结果如图4所示。如图4所示,不使用缓存功能指的是服务器执行Java项目构建时不采用本申请的一种Maven仓库的Jar包缓存方法。使用缓存功能指的是服务器执行Java项目构建时采用本申请的一种Maven仓库的Jar包缓存方法。由图4可知,采用本申请的一种Maven仓库的Jar包缓存方法能够缩短Java项目构建的构建时间。此外,图4中的jar包与本申请中表述的Jar包指代同一个意思。
本申请的一种Maven仓库的Jar包缓存方法,在Java项目构建时单独挂载了全新的文件系统,即创建具备独立的虚拟操作系统的服务器节点,做到了Java项目构建互不影响。同时,采用打包下载的方式解决了全新的文件系统的本地Maven仓库没有缓存第三方Jar包的问题,与Maven工具单独下载每个第三方Jar包相比,提高了第三方Jar包的下载速度,提高了Java项目构建的速度。此外,本申请的方案更加通用化,不依赖于操作系统的限制。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,附图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种Maven仓库的Jar包缓存装置,如图5所示,该装置包括获取模块502、下载模块504、解压模块506以及缓存模块508。获取模块502,用于在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,服务器节点具备独立的虚拟操作系统且服务器节点用于构建目标Java项目;下载模块504,用于根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包;解压模块506,用于将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包;缓存模块508,用于将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。
在其中一个实施例中,共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出各Java项目依赖的第三方Jar包文件的压缩包,多个Java项目中包含目标Java项目。
在其中一个实施例中,一种Maven仓库的Jar包缓存装置还包括创建模块,用于创建具备独立的虚拟操作系统的服务器节点,以使用服务器节点构建目标Java项目;在服务器节点中创建本地Maven仓库;在服务器节点中创建Maven工具,Maven工具用于管理本地Maven仓库中的多个第一目标第三方Jar包。
在其中一个实施例中,将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库之后,还包括:通过服务器节点执行目标Java项目的项目构建;在项目构建的项目编译时,若Maven工具检测到本地Maven仓库中未缓存有目标Java项目依赖的第二目标第三方Jar包,则通过Maven工具从远程Maven仓库获取第二目标第三方Jar包,并将第二目标第三方Jar包缓存到本地Maven仓库,以使得服务器节点根据本地Maven仓库中的第二目标第三方Jar包以及第一目标第三方Jar包执行项目编译。
在其中一个实施例中,一种Maven仓库的Jar包缓存装置还包括上传模块,用于在项目编译结束后,将本地Maven仓库中的第三方Jar包文件进行打包后上传到共享文件系统。
在其中一个实施例中,将本地Maven仓库中的第三方Jar包文件进行打包,包括:从本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;将待上传的第三方Jar包进行打包。
在其中一个实施例中,一种Maven仓库的Jar包缓存装置还包括销毁模块,用于当确定服务器节点结束目标Java项目的项目构建时,销毁服务器节点。
关于Maven仓库的Jar包缓存装置的具体限定可以参见上文中对于Maven仓库的Jar包缓存方法的限定,在此不再赘述。上述Maven仓库的Jar包缓存装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与共享文件系统,以从共享文件系统中下载Java项目依赖的第三方Jar包文件的压缩包。该计算机程序被处理器执行时以实现一种Maven仓库的Jar包缓存方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,服务器节点具备独立的虚拟操作系统且服务器节点用于构建目标Java项目;根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包;将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包;将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。
在其中一个实施例中,共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出各Java项目依赖的第三方Jar包文件的压缩包,多个Java项目中包含目标Java项目。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:创建具备独立的虚拟操作系统的服务器节点,以使用服务器节点构建目标Java项目;在服务器节点中创建本地Maven仓库;在服务器节点中创建Maven工具,Maven工具用于管理本地Maven仓库中的多个第一目标第三方Jar包。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:通过服务器节点执行目标Java项目的项目构建;在项目构建的项目编译时,若Maven工具检测到本地Maven仓库中未缓存有目标Java项目依赖的第二目标第三方Jar包,则通过Maven工具从远程Maven仓库获取第二目标第三方Jar包,并将第二目标第三方Jar包缓存到本地Maven仓库,以使得服务器节点根据本地Maven仓库中的第二目标第三方Jar包以及第一目标第三方Jar包执行项目编译。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:在项目编译结束后,将本地Maven仓库中的第三方Jar包文件进行打包后上传到共享文件系统。
在其中一个实施例中,处理器执行计算机程序实现上述的将本地Maven仓库中的第三方Jar包文件进行打包步骤时,具体实现以下步骤:从本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;将待上传的第三方Jar包进行打包。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:当确定服务器节点结束目标Java项目的项目构建时,销毁服务器节点。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:在服务器节点接收到目标Java项目的构建指令时,获取目标Java项目的标识信息,服务器节点具备独立的虚拟操作系统且服务器节点用于构建目标Java项目;根据目标Java项目的标识信息从共享文件系统中下载目标Java项目依赖的第三方Jar包文件的压缩包;将压缩包进行解压,得到目标Java项目依赖的多个第一目标第三方Jar包;将多个第一目标第三方Jar包缓存到服务器节点的本地Maven仓库,以使得服务器节点根据本地Maven仓库中的多个第一目标第三方Jar包执行目标Java项目的项目构建。
在其中一个实施例中,共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出各Java项目依赖的第三方Jar包文件的压缩包,多个Java项目中包含目标Java项目。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:创建具备独立的虚拟操作系统的服务器节点,以使用服务器节点构建目标Java项目;在服务器节点中创建本地Maven仓库;在服务器节点中创建Maven工具,Maven工具用于管理本地Maven仓库中的多个第一目标第三方Jar包。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:通过服务器节点执行目标Java项目的项目构建;在项目构建的项目编译时,若Maven工具检测到本地Maven仓库中未缓存有目标Java项目依赖的第二目标第三方Jar包,则通过Maven工具从远程Maven仓库获取第二目标第三方Jar包,并将第二目标第三方Jar包缓存到本地Maven仓库,以使得服务器节点根据本地Maven仓库中的第二目标第三方Jar包以及第一目标第三方Jar包执行项目编译。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:在项目编译结束后,将本地Maven仓库中的第三方Jar包文件进行打包后上传到共享文件系统。
在其中一个实施例中,计算机程序被处理器执行实现上述的将本地Maven仓库中的第三方Jar包文件进行打包步骤时,具体实现以下步骤:从本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;将待上传的第三方Jar包进行打包。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:当确定服务器节点结束目标Java项目的项目构建时,销毁服务器节点。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (5)

1.一种Maven仓库的Jar包缓存方法,所述方法包括:
创建具备独立的虚拟操作系统的服务器节点,以使用所述服务器节点构建目标Java项目;
在所述服务器节点中创建本地Maven仓库;
在所述服务器节点中创建Maven工具,所述Maven工具用于管理所述本地Maven仓库中的多个第一目标第三方Jar包;
在所述服务器节点接收到目标Java项目的构建指令时,获取所述目标Java项目的标识信息;
根据所述目标Java项目的标识信息从共享文件系统中下载所述目标Java项目依赖的第三方Jar包文件的压缩包,所述共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出所述各Java项目依赖的第三方Jar包文件的压缩包,所述多个Java项目中包含所述目标Java项目;
将所述压缩包进行解压,得到所述目标Java项目依赖的多个第一目标第三方Jar包;
将所述多个第一目标第三方Jar包缓存到所述服务器节点的本地Maven仓库,以使得所述服务器节点根据所述本地Maven仓库中的所述多个第一目标第三方Jar包执行所述目标Java项目的项目构建;
通过所述服务器节点执行所述目标Java项目的项目构建;
在所述项目构建的项目编译时,若所述Maven工具检测到所述本地Maven仓库中未缓存有所述目标Java项目依赖的第二目标第三方Jar包,则通过所述Maven工具从远程Maven仓库获取所述第二目标第三方Jar包,并将所述第二目标第三方Jar包缓存到所述本地Maven仓库,以使得所述服务器节点根据所述本地Maven仓库中的所述第二目标第三方Jar包以及所述第一目标第三方Jar包执行所述项目编译;
在所述项目编译结束后,从所述本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,所述待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;
将所述待上传的第三方Jar包进行打包后上传到所述共享文件系统。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当确定所述服务器节点结束所述目标Java项目的项目构建时,销毁所述服务器节点。
3.一种Maven仓库的Jar包缓存装置,其特征在于,所述装置包括:
创建模块,用于创建具备独立的虚拟操作系统的服务器节点,以使用所述服务器节点构建目标Java项目;在所述服务器节点中创建本地Maven仓库;在所述服务器节点中创建Maven工具,所述Maven工具用于管理所述本地Maven仓库中的多个第一目标第三方Jar包;
获取模块,用于在所述服务器节点接收到目标Java项目的构建指令时,获取所述目标Java项目的标识信息;
下载模块,用于根据所述目标Java项目的标识信息从共享文件系统中下载所述目标Java项目依赖的第三方Jar包文件的压缩包,所述共享文件系统通过隔离存储的方式管理多个Java项目依赖的第三方Jar包文件的压缩包并采用各Java项目的标识信息标识出所述各Java项目依赖的第三方Jar包文件的压缩包,所述多个Java项目中包含所述目标Java项目;
解压模块,用于将所述压缩包进行解压,得到所述目标Java项目依赖的多个第一目标第三方Jar包;
缓存模块,用于将所述多个第一目标第三方Jar包缓存到所述服务器节点的本地Maven仓库,以使得所述服务器节点根据所述本地Maven仓库中的所述多个第一目标第三方Jar包执行所述目标Java项目的项目构建;通过所述服务器节点执行所述目标Java项目的项目构建;在所述项目构建的项目编译时,若所述Maven工具检测到所述本地Maven仓库中未缓存有所述目标Java项目依赖的第二目标第三方Jar包,则通过所述Maven工具从远程Maven仓库获取所述第二目标第三方Jar包,并将所述第二目标第三方Jar包缓存到所述本地Maven仓库,以使得所述服务器节点根据所述本地Maven仓库中的所述第二目标第三方Jar包以及所述第一目标第三方Jar包执行所述项目编译;
上传模块,用于在所述项目编译结束后,从所述本地Maven仓库中的第三方Jar包文件中获取待上传的第三方Jar包,所述待上传的第三方Jar包为不因Java项目变更而更新的第三方Jar包;将所述待上传的第三方Jar包进行打包后上传到所述共享文件系统。
4.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至2中任一项所述方法的步骤。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至2中任一项所述的方法的步骤。
CN202110628498.6A 2021-06-07 2021-06-07 Maven仓库的Jar包缓存方法、装置及计算机设备 Active CN113268224B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110628498.6A CN113268224B (zh) 2021-06-07 2021-06-07 Maven仓库的Jar包缓存方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110628498.6A CN113268224B (zh) 2021-06-07 2021-06-07 Maven仓库的Jar包缓存方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN113268224A CN113268224A (zh) 2021-08-17
CN113268224B true CN113268224B (zh) 2024-02-27

Family

ID=77234355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110628498.6A Active CN113268224B (zh) 2021-06-07 2021-06-07 Maven仓库的Jar包缓存方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN113268224B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114860202A (zh) * 2022-04-22 2022-08-05 北京达佳互联信息技术有限公司 项目运行方法、装置、服务器及存储介质
CN115858220A (zh) * 2022-12-15 2023-03-28 中电金信软件有限公司 一种错误码共享方法、系统、计算机设备及可读存储介质
CN116578281B (zh) * 2023-07-13 2023-11-24 江西金发金融信息服务有限公司 基于代码包的网页开发方法、系统、电子设备及存储介质
CN117235023B (zh) * 2023-11-15 2024-03-12 广州嘉为科技有限公司 一种远程仓库缓存管理方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096272A (zh) * 2019-03-19 2019-08-06 深圳壹账通智能科技有限公司 库文件处理方法、装置、计算机设备及存储介质
CN111475148A (zh) * 2019-01-24 2020-07-31 北京京东尚科信息技术有限公司 第三方依赖库隔离方法及装置、电子设备、存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509633B2 (en) * 2004-12-16 2009-03-24 International Business Machines Corporation System and method for grid-based distribution of Java project compilation
US8813031B2 (en) * 2012-03-02 2014-08-19 Oracle International Corporation System and method for automatically resolving dependencies of Java Archive files for use with Maven

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475148A (zh) * 2019-01-24 2020-07-31 北京京东尚科信息技术有限公司 第三方依赖库隔离方法及装置、电子设备、存储介质
CN110096272A (zh) * 2019-03-19 2019-08-06 深圳壹账通智能科技有限公司 库文件处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN113268224A (zh) 2021-08-17

Similar Documents

Publication Publication Date Title
CN113268224B (zh) Maven仓库的Jar包缓存方法、装置及计算机设备
CN108037961B (zh) 一种应用程序配置方法、装置、服务器和存储介质
US11531535B2 (en) Firmware upgrade method and apparatus, and terminal
CN111752571B (zh) 程序升级方法、装置、设备及存储介质
KR102319657B1 (ko) 저장된 데이터 유닛들의 동작 관리
US20080098160A1 (en) Mobile device capable of multiple updates
WO2016000623A1 (zh) 初始化智能终端设备的方法、装置及系统
CN109474456B (zh) 配置数据处理方法、装置、计算机设备和存储介质
US11169796B2 (en) Methods and systems for remote software update
CN110673853A (zh) 一种编译方法、装置及系统
CN110597518B (zh) 项目构建方法、装置、计算机设备和存储介质
CN112286829B (zh) 测试脚本生成方法及装置
US20150373150A1 (en) Server, client, system and method for preloading browsed page in browser
CN104156225A (zh) 一种安装包的下载方法、系统及服务器
CN110362338B (zh) 一种在移动平台下的游戏资源打包和资源快速访问方法
CN104090946A (zh) 应用安装包中添加信息的方法及装置
CN102520994A (zh) 流式加载虚拟文件方法及系统
CN108536444B (zh) 插件编译方法、装置、计算机设备和存储介质
US20030217196A1 (en) Software on demand system
CN111580927B (zh) 通信的方法及容器通信系统
US10235188B2 (en) Method and system for dynamic loading of incremental changes of software
CN107643959A (zh) 镜像文件处理方法和装置
CN113805930A (zh) 增量组包方法及装置
CN114077458A (zh) 应用程序内业务模块启动方法、装置、设备和存储介质
CN112882658A (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