本发明涉及二方库配置,并且更具体地,涉及一种maven二方库的管控方法及系统。
背景技术:
1、随着企业级应用体系的日益庞大,java项目中的依赖管理也变得越来越复杂。一个典型的企业级应用都会依赖上百个开源类库和框架,除了这些三方库外,企业的大型系统都会采用模块化开发,这些模块会产生大量的内部依赖,即二方库。当企业提供标准产品和定制化开发时,这些二方库的管理和使用成为一个难题,这些二方库的版本关系错综复杂。如果每个项目组自己维护使用的二方库依赖版本,不仅大量重复劳动,也很容易出现jar包冲突。因此有效进行依赖管理成为java项目的一大难题。
2、传统通过maven方式直接管理依赖的方法在这个规模下已经显得捉襟见肘。每个项目组需要自行配置依赖版本,导致依赖容易不一致。同时依赖之间的版本冲突也时有发生。随着时间推移,依赖关系会变得越来越复杂。
3、为了解决这个问题,maven提供了依赖管理的概念,通常是由一个专门的项目来维护依赖版本。各个项目组将这个依赖管理项目作为parent,那么子项目就可以直接继承parent中控制的依赖版本。这在一定程度上缓解了依赖管理困境。
4、但是这种方案也存在一定问题。首先是对项目结构的侵入太深,子项目必须继承特定的parent。其次,依赖管理项目过于笨重,即使只改一个依赖也要重新发布。再者,不同产品线的依赖定制化需求也难以满足。
5、为了进一步优化这一现状,maven提供了新的依赖管理机制:bill of materials(bom)。bom本质上也是一个maven项目,它通过dependencymanagement元素来控制依赖版本。但不同于parent,使用bom的子项目不需要继承bom项目,也不会继承它的构建配置等其它元素。这使得bom可以作为一个独立的依赖版本控制中心,不侵入项目的组织结构。
6、bom带来的另一个优点是可重用性。多个项目可以共享一个bom来管理依赖版本,不同产品线也可以有各自的bom。这极大地提高了依赖管理的一致性与灵活性。通过合理使用bom,可以有效解决java企业项目中依赖管理的种种痛点。
7、总之,maven的bom机制为依赖管理提供了新的思路。但是仅仅提供版本控制还不够,仍需要简化使用方式。
技术实现思路
1、本发明提出一种maven二方库的管控方法及系统,以解决如何对二方库进行配置的问题。
2、为了解决上述问题,根据本发明的一个方面,提供了一种maven二方库的管控方法,所述方法包括:
3、基于需求的维度进行maven bom项目的创建,并基于所述maven bom项目维护所有二方依赖模块的版本信息,以通过定义和管理二方依赖模块的版本,实现按维度进行二方库版本的控制;
4、基于所述maven bom项目创建子模块starter,并将使用子模块starter时必须的依赖添加到starter的具体依赖中;其中,所述子模块starter通过parent继承所述mavenbom项目中管理的二方库版本;
5、基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖。
6、优选地,其中所述维度,包括:团队维度、产品维度和/或功能维度。
7、优选地,其中所述maven bom项目的打包类型为pom,所述maven bom项目中的dependencymanagement部分列举所有的二方依赖及其版本。
8、优选地,其中所述基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖,包括:
9、当应用场景为开发环境时,通过引入所述maven bom项目来管理二方库的依赖版本,根据开发的需要引入需要的接口依赖;
10、当应用场景为运行时环境时,通过引入所述子模块stater来使用二方库的依赖。
11、根据本发明的另一个方面,提供了一种maven二方库的管控系统,所述系统包括:
12、bom创建单元,用于基于需求的维度进行maven bom项目的创建,并基于所述mavenbom项目维护所有二方依赖模块的版本信息,以通过定义和管理二方依赖模块的版本,实现按维度进行二方库版本的控制;
13、starter创建单元,用于基于所述maven bom项目创建子模块starter,并将使用子模块starter时必须的依赖添加到starter的具体依赖中;其中,所述子模块starter通过parent继承所述maven bom项目中管理的二方库版本;
14、应用单元,用于基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖。
15、优选地,其中所述维度,包括:团队维度、产品维度和/或功能维度。
16、优选地,其中所述maven bom项目的打包类型为pom,所述maven bom项目中的dependencymanagement部分列举所有的二方依赖及其版本。
17、优选地,其中所述应用单元,基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖,包括:
18、当应用场景为开发环境时,通过引入所述maven bom项目来管理二方库的依赖版本,根据开发的需要引入需要的接口依赖;
19、当应用场景为运行时环境时,通过引入所述子模块stater来使用二方库的依赖。
20、基于本发明的另一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种maven二方库的管控方法中任一项的步骤。
21、基于本发明的另一方面,本发明提供一种电子设备,包括:
22、上述的计算机可读存储介质;以及
23、一个或多个处理器,用于执行所述计算机可读存储介质中的程序。
24、本发明提供了一种maven二方库的管控方法及系统,包括:基于需求的维度进行maven bom项目的创建,并基于所述maven bom项目维护所有二方依赖模块的版本信息,以通过定义和管理二方依赖模块的版本,实现按维度进行二方库版本的控制;基于所述mavenbom项目创建子模块starter,并将使用子模块starter时必须的依赖添加到starter的具体依赖中;其中,所述子模块starter通过parent继承所述maven bom项目中管理的二方库版本;基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖。本发明使用bom从合适的维度管理二方库依赖,继承bom创建starter,维护运行时所需的依赖,开发时使用bom,按需引入需要的依赖,运行时使用starter,自动引入必须的依赖和正确的版本,能够为java企业级项目的二方库依赖管理提供了完整可行的解决方案,其显著的技术优势和效果有助于减少项目成本、提高开发效率、增强系统质量。
1.一种maven二方库的管控方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述维度,包括:团队维度、产品维度和/或功能维度。
3.根据权利要求1所述的方法,其特征在于,所述maven bom项目的打包类型为pom,所述maven bom项目中的dependencymanagement部分列举所有的二方依赖及其版本。
4.根据权利要求1所述的方法,其特征在于,所述基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖,包括:
5.一种maven二方库的管控系统,其特征在于,所述系统包括:
6.根据权利要求5所述的系统,其特征在于,所述维度,包括:团队维度、产品维度和/或功能维度。
7.根据权利要求5所述的系统,其特征在于,所述maven bom项目的打包类型为pom,所述maven bom项目中的dependencymanagement部分列举所有的二方依赖及其版本。
8.根据权利要求5所述的系统,其特征在于,所述应用单元,基于应用场景进行所述maven bom项目或子模块starter的选择,以基于所述maven bom项目或子模块starter引入需要的依赖,包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括: