CN106033336B - 解决Maven依赖冲突的方法、装置和*** - Google Patents
解决Maven依赖冲突的方法、装置和*** Download PDFInfo
- Publication number
- CN106033336B CN106033336B CN201510110126.9A CN201510110126A CN106033336B CN 106033336 B CN106033336 B CN 106033336B CN 201510110126 A CN201510110126 A CN 201510110126A CN 106033336 B CN106033336 B CN 106033336B
- Authority
- CN
- China
- Prior art keywords
- maven
- relies
- conflict
- client
- contention
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种解决Maven依赖冲突的方法、装置和***,属于计算机通信技术领域。方法包括:获取客户端提交的Maven软件项目依赖冲突信息;检索预设的Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。本发明可以提高解决Maven依赖冲突的准确性,可以不单依赖于开发人员的经验和水平,提高可靠性。
Description
技术领域
本发明涉及计算机通信技术领域,具体涉及一种解决Maven依赖冲突的方法、装置和***。
背景技术
随着计算机通信技术的发展,软件开发项目管理工具Maven得到了广泛的应用。Maven基于POM(Project Object Model,项目对象模型)来管理软件开发项目的构建,POM是Maven对一个单一软件项目的描述,通常以pom.xml文件形式存在。
当一个软件项目需要用到另外一个软件项目所发布的开发包时,需要在一个软件项目的POM中描述对于另外一个软件项目的开发包的依赖关系,包括版本信息等,这就是Maven依赖。当这种依赖关系变得复杂之后,对于开发包版本上的使用就很容易出现Maven依赖冲突的情况。比如,如图1所示,软件项目A分别依赖了软件项目B的版本为1.0的开发包和软件项目C的版本为3.0的开发包,而软件项目B的版本为1.0的开发包依赖了软件项目D的版本为1.0的开发包,软件项目C的版本为3.0的开发包则依赖了软件项目D的版本为2.0的开发包,软件项目D的开发包的版本冲突,发生了Maven依赖冲突。
现有解决Maven依赖冲突的方法是:开发人员人工判断Maven依赖冲突的原因,然后人工调试、咨询、查看相关文档进行解决。例如:究竟应该在软件项目A中使用D-1.0还是D-2.0,需要开发人员人工判断解决。而解决Maven依赖冲突的时间长短和准确性,与开发人员自身的水平以及对相关问题的熟悉程度有很大关系,现有解决Maven依赖冲突的方法依赖于开发人员的经验和水平,可靠性差。
发明内容
为了解决现有技术的问题,本发明提供了一种解决Maven依赖冲突的方法、装置和***,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,预设的Maven依赖冲突解决信息数据库中存储的是任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论,可以提高解决Maven依赖冲突的准确性,可以不单依赖于开发人员的经验和水平,提高可靠性。
为了解决上述问题,本发明公开了一种解决Maven依赖冲突的方法,所述方法包括:
获取客户端提交的Maven软件项目依赖冲突信息;
检索预设的Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;其中,所述Maven依赖冲突解决信息数据库用于存储任一所述客户端在解决Maven软件项目依赖冲突过程中提交的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
进一步地,获取客户端提交的Maven软件项目依赖冲突信息,包括:
获取所述客户端通过Maven指令行工具中的查看指令提交的所述Maven软件项目依赖冲突信息;或,
获取所述客户端通过Eclipse POM编辑器中的查看界面提交的所述Maven软件项目依赖冲突信息。
进一步地,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案中选择的时,所述方法还包括:
获取所述客户端提交的Maven依赖冲突解决方案选择信息;
对所述Maven依赖冲突解决信息数据库中的与所述Maven依赖冲突解决方案选择信息对应的所述Maven依赖冲突解决方案的使用人数和选择比例进行更新。
进一步地,获取所述客户端提交的Maven依赖冲突解决方案选择信息,包括:
获取所述客户端通过Maven指令行工具中的选择指令提交的所述Maven依赖冲突解决方案选择信息;或,
获取所述客户端通过Eclipse POM编辑器中的选择界面提交的所述Maven依赖冲突解决方案选择信息。
进一步地,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是所述客户端重新设定的时,所述方法还包括:
获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
将所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案存储在所述Maven依赖冲突解决信息数据库中。
进一步地,获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案,包括:
获取所述客户端通过Maven指令行工具中的上传指令提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;或,
获取所述客户端通过Eclipse POM编辑器中的上传界面提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
进一步地,将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端之后,还包括:
获取所述客户端提交的Maven依赖冲突评论信息;
将所述Maven依赖冲突评论信息,添加在所述Maven依赖冲突解决信息数据库中所述Maven依赖冲突评论信息对应的所述Maven依赖冲突解决方案中。
进一步地,获取所述客户端提交的Maven依赖冲突评论信息,包括:
获取所述客户端通过Maven指令行工具中的评论指令提交的Maven依赖冲突评论信息;或,
获取所述客户端通过Eclipse POM编辑器中的查看界面提交的Maven依赖冲突评论信息。
进一步地,将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案,包括:
从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论中,选取满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
将满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端根据满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论,设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
为了解决上述问题,本发明还公开了一种解决Maven依赖冲突的装置,所述装置包括:
第一获取模块,用于获取客户端提交的Maven软件项目依赖冲突信息;
查找模块,用于检索预设的Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;其中,所述Maven依赖冲突解决信息数据库用于存储任一所述客户端在解决Maven软件项目依赖冲突过程中提交的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
处理模块,用于将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
进一步地,所述第一获取模块包括:
第一获取单元,用于获取所述客户端通过Maven指令行工具中的查看指令提交的所述Maven软件项目依赖冲突信息;或,
第二获取单元,用于获取所述客户端通过Eclipse POM编辑器中的查看界面提交的所述Maven软件项目依赖冲突信息。
进一步地,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案中选择的时,所述装置还包括:
第二获取模块,用于获取所述客户端提交的Maven依赖冲突解决方案选择信息;
更新模块,用于对所述Maven依赖冲突解决信息数据库中的与所述Maven依赖冲突解决方案选择信息对应的所述Maven依赖冲突解决方案的使用人数和选择比例进行更新。
进一步地,所述第二获取模块包括:
第三获取单元,用于获取所述客户端通过Maven指令行工具中的选择指令提交的所述Maven依赖冲突解决方案选择信息;或,
第四获取单元,用于获取所述客户端通过Eclipse POM编辑器中的选择界面提交的所述Maven依赖冲突解决方案选择信息。
进一步地,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是所述客户端重新设定的时,所述装置还包括:
第三获取模块,用于获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
第一存储模块,用于将所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案存储在所述Maven依赖冲突解决信息数据库中。
进一步地,所述第三获取模块包括:
第五获取单元,用于获取所述客户端通过Maven指令行工具中的上传指令提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;或,
第六获取单元,用于获取所述客户端通过Eclipse POM编辑器中的上传界面提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
进一步地,所述装置还包括:
第四获取模块,用于在所述处理模块将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端之后,获取所述客户端提交的Maven依赖冲突评论信息;
第二存储模块,用于将所述Maven依赖冲突评论信息,添加在所述Maven依赖冲突解决信息数据库中所述Maven依赖冲突评论信息对应的所述Maven依赖冲突解决方案中。
进一步地,所述第四获取模块包括:
第七获取单元,用于获取所述客户端通过Maven指令行工具中的评论指令提交的Maven依赖冲突评论信息;或,
第八获取单元,用于获取所述客户端通过Eclipse POM编辑器中的查看界面提交的Maven依赖冲突评论信息。
进一步地,所述处理模块包括:
选取单元,用于从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论中,选取满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
返回单元,用于将满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端根据满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论,设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
为了解决上述问题,本发明还公开了一种解决Maven依赖冲突的***,所述***包括:
客户端、Maven依赖冲突共享服务器和Maven依赖冲突解决信息数据库;
其中,所述Maven依赖冲突解决信息数据库,用于存储任一所述客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论;
所述客户端包括:第一提交模块,用于向所述Maven依赖冲突共享服务器提交Maven软件项目依赖冲突信息;
所述Maven依赖冲突共享服务器包括:第一获取模块,用于获取所述客户端提交的所述Maven软件项目依赖冲突信息;
查找模块,用于检索所述Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;
处理模块,用于将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端;
相应地,所述客户端还包括:设定模块,用于设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
进一步地,当所述设定模块设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案中选择的时,所述客户端还包括:
第二提交模块,用于向所述Maven依赖冲突共享服务器提交Maven依赖冲突解决方案选择信息;
相应地,所述Maven依赖冲突共享服务器还包括:
第二获取模块,用于获取所述客户端提交的Maven依赖冲突解决方案选择信息;
更新模块,用于对所述Maven依赖冲突解决信息数据库中的与所述Maven依赖冲突解决方案选择信息对应的所述Maven依赖冲突解决方案的使用人数和选择比例进行更新。
进一步地,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是所述客户端重新设定的时,所述客户端还包括:
第三提交模块,用于向所述Maven依赖冲突共享服务器提交所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
相应地,所述Maven依赖冲突共享服务器还包括:
第三获取模块,用于获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
第一存储模块,用于将所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案存储在所述Maven依赖冲突解决信息数据库中。
进一步地,所述客户端还包括:
第四提交模块,用于在所述处理模块将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端之后,向所述Maven依赖冲突共享服务器提交Maven依赖冲突评论信息;
相应地,所述Maven依赖冲突共享服务器还包括:
第四获取模块,用于获取所述客户端提交的Maven依赖冲突评论信息;
第二存储模块,用于将所述Maven依赖冲突评论信息,添加在所述Maven依赖冲突解决信息数据库中所述Maven依赖冲突评论信息对应的所述Maven依赖冲突解决方案中。
与现有技术相比,本发明可以获得包括以下技术效果:
1)检索预设的Maven依赖冲突解决信息数据库,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,预设的Maven依赖冲突解决信息数据库中存储的是任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论,可以提高解决Maven依赖冲突的准确性,可以不单依赖于开发人员的经验和水平,提高可靠性。
2)可以根据Maven依赖冲突解决方案选择信息,对Maven依赖冲突解决信息数据库中的Maven依赖冲突解决方案的使用人数和选择比例进行更新,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。
3)可以将客户端重新设定的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中,增加Maven依赖冲突解决信息数据库中的信息量,从而进一步地提高解决Maven依赖冲突的准确性。
4)可以将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库中,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。
5)可以通过Maven指令行工具或Eclipse POM编辑器进行相关信息的提交,方便快捷。
当然,实施本发明的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种Maven依赖冲突的示意图;
图2是本发明实施例的第一种解决Maven依赖冲突的方法流程图;
图3是本发明实施例的另一种Maven依赖冲突的示意图;
图4是本发明实施例的第二种解决Maven依赖冲突的方法流程图;
图5是本发明实施例的第三种解决Maven依赖冲突的方法流程图;
图6是本发明实施例的第四种解决Maven依赖冲突的方法流程图;
图7是本发明实施例的第五种解决Maven依赖冲突的方法流程图;
图8是本发明实施例的第一种解决Maven依赖冲突的装置结构示意图;
图9是本发明实施例的第二种解决Maven依赖冲突的装置结构示意图;
图10是本发明实施例的第三种解决Maven依赖冲突的装置结构示意图;
图11是本发明实施例的第四种解决Maven依赖冲突的装置结构示意图;
图12是本发明实施例的第一种解决Maven依赖冲突的***结构示意图;
图13是本发明实施例的第二种解决Maven依赖冲突的***结构示意图;
图14是本发明实施例的第三种解决Maven依赖冲突的***结构示意图;
图15是本发明实施例的第四种解决Maven依赖冲突的***结构示意图。
具体实施方式
以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
实施例描述
下面以一实施例对本发明方法的实现作进一步说明。如图2所示,为本发明实施例的一种解决Maven依赖冲突的方法流程图,该方法包括:
S101:获取客户端提交的Maven软件项目依赖冲突信息。
其中,Maven软件项目依赖冲突信息包括Maven依赖冲突点、Maven依赖关系等信息。
例如:参见图3,对于图3中的Maven依赖冲突点,客户端提交的Maven软件项目依赖冲突信息大致如下:
{
Conflict:D
Related:
[
{source:A1.0,target:D2.0},
{source:B1.0,target:D1.0},
{source:C3.0,target:D3.0}
]
}
具体地,客户端提交Maven软件项目依赖冲突信息时,可以通过Maven指令行工具中的查看指令提交,或通过Eclipse POM编辑器中的查看界面提交等。
其中,Maven指令行工具是使用最广泛的Maven客户端,可以很方便的在Windows和Linux等操作***下以指令行的方式执行各种Maven指令。Maven指令行工具可以通过插件方式进行扩展。在Maven插件扩展中,需要继承并实现Mojo对象,规定好该Mojo对象接收的指令格式和参数,这样,在Maven指令行输入指令时即可调用该Mojo对象。在本实施例中,扩展的插件名称为ConflictAdviser,相应的Mojo对象的名称为ConflictAdviserMojo。本实施例中ConflictAdviser提供了四种指令:show(查看指令)/choose(选择指令)/comment(评论指令)/upload(上传指令)分别用于Maven依赖冲突解决方案的查看、选择、评论和上传。Maven指令行工具中客户端提交Maven软件项目依赖冲突信息(即分析当前Maven软件项目的pom的Maven依赖冲突点,并查看已有Maven依赖冲突解决方案)的指令为:>mvnconflictadviser:show。
其中,Maven指令行工具由于UI(用户界面)方面的局限,在交互上会比较复杂。而Eclipse POM编辑器在交互方面会方便许多,而且也是开发人员广泛使用的Maven IDE工具,因此,在本实施例中,也会对Eclipse POM编辑器进行扩展,以可视化的方式实现对Maven依赖冲突解决方案的分享与评价。可以在Eclipse POM编辑器源码的基础之上进行扩展,通过查看界面、选择界面、评论界面和上传界面以可视化操作的方式实现Maven依赖冲突解决方案的查看、选择、评论和上传。
从而,获取客户端提交的Maven软件项目依赖冲突信息,包括:
获取客户端通过Maven指令行工具中的查看指令提交的Maven软件项目依赖冲突信息;或,
获取客户端通过Eclipse POM编辑器中的查看界面提交的Maven软件项目依赖冲突信息。
需要说明的是,客户端提交Maven软件项目依赖冲突信息时,可以采用同步方式、也可以采用异步方式,此处优先选用同步方式。
S102:检索预设的Maven依赖冲突解决信息数据库,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论。
其中,Maven依赖冲突解决信息数据库用于存储任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论。
具体地,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论时,可以先查找与Maven软件项目依赖冲突信息完全相同的Maven依赖冲突点对应的Maven依赖冲突解决方案和Maven依赖冲突评论,然后查找与Maven软件项目依赖冲突信息相近的Maven依赖冲突点对应的Maven依赖冲突解决方案和Maven依赖冲突评论,例如:对于图3中的Maven依赖冲突点,先查找与图3中的Maven依赖冲突点突完全相同的Maven依赖冲突点对应的Maven依赖冲突解决方案和Maven依赖冲突评论,然后查找与图3中的Maven依赖冲突点相近的Maven依赖冲突点对应的Maven依赖冲突解决方案和Maven依赖冲突评论,如仅有A1.0和B1.0而无C3.0的情况。
S103:将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
其中,Maven依赖冲突解决方案包括:
1)Maven依赖冲突元描述(***将根据Maven依赖冲突元描述来进行依赖冲突的匹配);2)目前遭遇该Maven依赖冲突问题的人数;3)针对该Maven依赖冲突,目前选择比例最高的Maven依赖冲突解决方案及其选择比例;4)Maven依赖冲突解决方案描述(结构化说明最终使用了哪个版本的包);5)Maven依赖冲突解决方案提供人;6)Maven依赖冲突解决方案的提供时间;7)Maven依赖冲突解决方案说明(非结构化说明,解释为何采用这种方案,如果是相关开发包的owner,可以额外说明,以增加该Maven依赖冲突解决方案的可信度);8)该Maven依赖冲突解决方案的选择比例等。
其中,Maven依赖冲突评论包括:评论(其他客户端对该Maven依赖冲突解决方案的评论意见)、选择理由等。
具体地,当客户端通过在Maven指令行工具中输入查看指令(>mvnconflictadviser:show)提交Maven软件项目依赖冲突信息时,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,相应的返回结果示意如下(对应图3的情况):
[INFO]Building testa Maven Webapp
[INFO]task-segment:[conflictadviser]
[INFO]---------------------------------------------------------------
[INFO][1.Conflict on:com.alibaba.testd:test-d]
[INFO][summary:519guys met this conliction,96%followed Advice 2]
[INFO][####confliction information####]
[INFO]com.alibaba.testa:test-a:war:1.0-SNAPSHOT
[INFO]+--com.alibaba.testd:test-d:jar:2.0:compile
[INFO]+--com.alibaba.testb:test-b:jar:1.0:compile
[INFO]|+--com.alibaba.testd:test-d:jar:1.0:compile
[INFO]+--com.alibaba.testc:test-c:jar:3.0:compile
[INFO]|+--com.alibaba.testd:test-d:jar:3.0:compile
[INFO][####display advices####]
[INFO]=====Advice 1(4%followed this advice)====
[INFO]provider:zhangsan.zs(repulation:34)
[INFO]advice:com.alibaba.testd:test-d:3.0
[INFO]time:2014-03-05
[INFO]words from provider:none
[INFO]=====Advice 2(96%followed this advice)====
[INFO]provider:tanjie.tj(repulation:865)
[INFO]advice:com.alibaba.testd:test-d:2.0
[INFO]time:2014-04-12
[INFO]words from provider:test-d2.0完全兼容1.0,3.0不完全兼容2.0;而test-c3.0没有用到test-d3.0任何新特性,选择test-d3.0的话可能遭遇运行时ClassNotFound异常。
[INFO]---------------------------------------------------------------
[INFO][2.Conflict on:com.alibaba.teste:test-e]
……
由返回的结果可以直观的看到目前Maven软件项目中存在的所有Maven依赖冲突点及Maven依赖冲突解决方案。其中,针对test-d.jar的冲突点,96%的人选择了Advice 2(使用test-d-2.0.jar),此外,该Maven依赖冲突解决方案的提供者还给出了详细说明。在这种情况下,可以相信Advice 2是正确的选择,客户端可以设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是Advice 2(使用test-d-2.0.jar)。从而开发人员可以省去很多判断的时间,也可以最大程度地防止误判的出现。此外,如上面所示,Maven依赖冲突解决方案的提供者还可以赚取名声积分(repulation),上传的Maven依赖冲突解决方案越多,选择这些Maven依赖冲突解决方案的人越多,Maven依赖冲突解决方案的提供者的名声积分也就越高。从而在后续选择中,可以根据Maven依赖冲突解决方案的提供者的名声积分来判断其提供的Maven依赖冲突解决方案的可行性。
>mvn conflictadviser:show是最简单的提交Maven软件项目依赖冲突信息(即查看Maven依赖冲突解决方案)的指令方式,还可以设置一些选项以便更方便地显示Maven依赖冲突解决方案的相关信息,例如:>mvnconflictadviser:show-Dconfliction=com.alibaba.testd:test-d-Dshowcomments=true,-Dconfliction选项表示只打印当前项目中发生在test-d上面的Maven依赖冲突点和Maven依赖冲突解决方案,而选项-Dshowcomments则表示不仅打印Maven依赖冲突解决方案的选择比例,还打印其他人员对各个Maven依赖冲突解决方案的评论(可以由Maven依赖冲突共享服务器根据规则设置进行自动过滤筛选)。
具体地,参见图4,在一优选的实施例中,当客户端设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是从与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案中选择的时,该方法还包括:
S201:获取客户端提交的Maven依赖冲突解决方案选择信息。
具体地,客户端提交Maven依赖冲突解决方案选择信息时,可以通过Maven指令行工具中的选择指令(>mvn conflictadviser:choose)提交,或通过Eclipse POM编辑器中的选择界面提交等。例如:mvn conflictadviser:choose-Dconfliction=com.alibaba.testd:test-d-Dchoice=2,表明选择的是第2个Maven依赖冲突解决方案。
从而,获取客户端提交的Maven依赖冲突解决方案选择信息,包括:
获取客户端通过Maven指令行工具中的选择指令提交的Maven依赖冲突解决方案选择信息;或,
获取客户端通过Eclipse POM编辑器中的选择界面提交的Maven依赖冲突解决方案选择信息。
需要说明的是,客户端提交Maven依赖冲突解决方案选择信息时,可以采用同步方式、也可以采用异步方式,此处优先选用异步方式。
S202:对Maven依赖冲突解决信息数据库中的与Maven依赖冲突解决方案选择信息对应的Maven依赖冲突解决方案的使用人数和选择比例进行更新。
具体地,参见图5,在一优选的实施例中,当客户端设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是客户端重新设定的时,该方法还包括:
S301:获取客户端提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
具体地,客户端提交客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案时,可以通过Maven指令行工具中的上传指令(>mvnconflictadviser:upload)提交,或通过Eclipse POM编辑器中的上传界面提交等。在提交客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案时,还可以指定Maven依赖冲突点,Maven依赖冲突解决方案的提供者姓名,建议选择版本,以及建议说明等,例如:>mvn conflictadviser:upload-Dconfliction=com.alibaba.testd:test-d-Dprovider=tanjie.tj-Dadvice=com.alibaba.t estd:test-d:2.0-Dwords=“2.0完全兼容1.0,3.0不完全兼容2.0”。
从而,获取客户端提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,包括:
获取客户端通过Maven指令行工具中的上传指令提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案;或,
获取客户端通过Eclipse POM编辑器中的上传界面提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
需要说明的是,客户端提交客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案时,可以采用同步方式、也可以采用异步方式,此处优先选用异步方式。
S302:将客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中。
具体地,将客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中时,具体包括:判断Maven依赖冲突解决信息数据库中是否已存在与Maven软件项目依赖冲突信息对应的Maven依赖冲突点,如果已存在,则将与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案添加到与Maven软件项目依赖冲突信息对应的Maven依赖冲突点中;如果没有存在,则在Maven依赖冲突解决信息数据库中设置与Maven软件项目依赖冲突信息对应的Maven依赖冲突点,将与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案添加到设置的与Maven软件项目依赖冲突信息对应的Maven依赖冲突点中。
具体地,参见图6,在一优选的实施例中,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端之后,还包括:
S401:获取客户端提交的Maven依赖冲突评论信息。
具体地,客户端提交Maven依赖冲突评论信息时,可以通过Maven指令行工具中的评论指令(>mvn conflictadviser:comment)提交,或通过Eclipse POM编辑器中的评论界面提交等。对现有解决方案进行评论需要指定冲突以及选择的方案,并进行评论。例如:>mvn conflictadviser:comment-Dconfliction=com.alibaba.testd:test-d-Dchoice=1-Dcomment=“该Maven依赖冲突解决方案建议使用3.0,在运行时遭遇异常错误”。
从而,获取客户端提交的Maven依赖冲突评论信息,包括:
获取客户端通过Maven指令行工具中的评论指令提交的Maven依赖冲突评论信息;或,
获取客户端通过Eclipse POM编辑器中的查看界面提交的Maven依赖冲突评论信息。
需要说明的是,客户端提交Maven依赖冲突评论信息时,可以采用同步方式、也可以采用异步方式,此处优先选用异步方式。
S402:将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库中Maven依赖冲突评论信息对应的Maven依赖冲突解决方案中。
具体地,与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论可能会有很多,为了快速方便地将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,可以先行筛选,从中选取满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论,因此,参见图7,在一优选的实施例中,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,可以包括:
S501:从与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论中,选取满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论。
S502:将满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
本发明实施例所述的解决Maven依赖冲突的方法,检索预设的Maven依赖冲突解决信息数据库,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,预设的Maven依赖冲突解决信息数据库中存储的是任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论,可以提高解决Maven依赖冲突的准确性,可以不单依赖于开发人员的经验和水平,提高可靠性。可以根据Maven依赖冲突解决方案选择信息,对Maven依赖冲突解决信息数据库中的Maven依赖冲突解决方案的使用人数和选择比例进行更新,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。可以将客户端重新设定的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中,增加Maven依赖冲突解决信息数据库中的信息量,从而进一步地提高解决Maven依赖冲突的准确性。可以将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库中,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。可以通过Maven指令行工具或Eclipse POM编辑器进行相关信息的提交,方便快捷。
如图8所示,是本发明实施例的一种解决Maven依赖冲突的装置结构图,该装置包括:
第一获取模块601,用于获取客户端提交的Maven软件项目依赖冲突信息;
查找模块602,用于检索预设的Maven依赖冲突解决信息数据库,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;其中,Maven依赖冲突解决信息数据库用于存储任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论;
处理模块603,用于将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
进一步地,第一获取模块601包括:
第一获取单元,用于获取客户端通过Maven指令行工具中的查看指令提交的Maven软件项目依赖冲突信息;或,
第二获取单元,用于获取客户端通过Eclipse POM编辑器中的查看界面提交的Maven软件项目依赖冲突信息。
进一步地,当客户端设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是从与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案中选择的时,参见图9,该装置还包括:
第二获取模块604,用于获取客户端提交的Maven依赖冲突解决方案选择信息;
更新模块605,用于对Maven依赖冲突解决信息数据库中的与Maven依赖冲突解决方案选择信息对应的Maven依赖冲突解决方案的使用人数和选择比例进行更新。
进一步地,第二获取模块604包括:
第三获取单元,用于获取客户端通过Maven指令行工具中的选择指令提交的Maven依赖冲突解决方案选择信息;或,
第四获取单元,用于获取客户端通过Eclipse POM编辑器中的选择界面提交的Maven依赖冲突解决方案选择信息。
进一步地,当客户端设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是客户端重新设定的时,参见图10,该装置还包括:
第三获取模块606,用于获取客户端提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案;
第一存储模块607,用于将客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中。
进一步地,第三获取模块606包括:
第五获取单元,用于获取客户端通过Maven指令行工具中的上传指令提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案;或,
第六获取单元,用于获取客户端通过Eclipse POM编辑器中的上传界面提交的客户端重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
进一步地,参见图11,该装置还包括:
第四获取模块608,用于在处理模块603将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端之后,获取客户端提交的Maven依赖冲突评论信息;
第二存储模块609,用于将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库中Maven依赖冲突评论信息对应的Maven依赖冲突解决方案中。
进一步地,第四获取模块608包括:
第七获取单元,用于获取客户端通过Maven指令行工具中的评论指令提交的Maven依赖冲突评论信息;或,
第八获取单元,用于获取客户端通过Eclipse POM编辑器中的查看界面提交的Maven依赖冲突评论信息。
进一步地,处理模块603包括:
选取单元,用于从与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论中,选取满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论;
返回单元,用于将满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据满足预设推送条件的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
本发明实施例所述的解决Maven依赖冲突的装置,检索预设的Maven依赖冲突解决信息数据库,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,预设的Maven依赖冲突解决信息数据库中存储的是任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论,可以提高解决Maven依赖冲突的准确性,可以不单依赖于开发人员的经验和水平,提高可靠性。可以根据Maven依赖冲突解决方案选择信息,对Maven依赖冲突解决信息数据库中的Maven依赖冲突解决方案的使用人数和选择比例进行更新,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。可以将客户端重新设定的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中,增加Maven依赖冲突解决信息数据库中的信息量,从而进一步地提高解决Maven依赖冲突的准确性。可以将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库中,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。可以通过Maven指令行工具或Eclipse POM编辑器进行相关信息的提交,方便快捷。
如图12所示,是本发明实施例的一种解决Maven依赖冲突的***结构图,该***包括:
客户端70、Maven依赖冲突共享服务器80和Maven依赖冲突解决信息数据库90;
其中,Maven依赖冲突解决信息数据库90,用于存储任一客户端70在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论;
客户端70包括:第一提交模块701,用于向Maven依赖冲突共享服务器80提交Maven软件项目依赖冲突信息;
Maven依赖冲突共享服务器80包括:第一获取模块801,用于获取客户端70提交的Maven软件项目依赖冲突信息;
查找模块802,用于检索Maven依赖冲突解决信息数据库90,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;
处理模块803,用于将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端70;
相应地,客户端70还包括:设定模块702,用于根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案。
进一步地,当设定模块702设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是从与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案中选择的时,参见图13,客户端70还包括:
第二提交模块703,用于向Maven依赖冲突共享服务器80提交Maven依赖冲突解决方案选择信息;
相应地,Maven依赖冲突共享服务器80还包括:
第二获取模块804,用于获取客户端70提交的Maven依赖冲突解决方案选择信息;
更新模块805,用于对Maven依赖冲突解决信息数据库90中的与Maven依赖冲突解决方案选择信息对应的Maven依赖冲突解决方案的使用人数和选择比例进行更新。
进一步地,当客户端70设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案是客户端70重新设定的时,参见图14,客户端70还包括:
第三提交模块704,用于向Maven依赖冲突共享服务器80提交客户端70重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案;
相应地,Maven依赖冲突共享服务器80还包括:
第三获取模块806,用于获取客户端70提交的客户端70重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案;
第一存储模块807,用于将客户端70重新设定的与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库90中。
进一步地,参见图15,客户端70还包括:
第四提交模块705,用于在处理模块803将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端70之后,向Maven依赖冲突共享服务器80提交Maven依赖冲突评论信息;
相应地,Maven依赖冲突共享服务器80还包括:
第四获取模块808,用于获取客户端70提交的Maven依赖冲突评论信息;
第二存储模块809,用于将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库90中Maven依赖冲突评论信息对应的Maven依赖冲突解决方案中。
本发明实施例所述的解决Maven依赖冲突的***,检索预设的Maven依赖冲突解决信息数据库,查找与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,将与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论返回给客户端,使得客户端根据与Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论,设定与Maven软件项目依赖冲突信息对应的Maven依赖冲突解决方案,预设的Maven依赖冲突解决信息数据库中存储的是任一客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论,可以提高解决Maven依赖冲突的准确性,可以不单依赖于开发人员的经验和水平,提高可靠性。可以根据Maven依赖冲突解决方案选择信息,对Maven依赖冲突解决信息数据库中的Maven依赖冲突解决方案的使用人数和选择比例进行更新,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。可以将客户端重新设定的Maven依赖冲突解决方案存储在Maven依赖冲突解决信息数据库中,增加Maven依赖冲突解决信息数据库中的信息量,从而进一步地提高解决Maven依赖冲突的准确性。可以将Maven依赖冲突评论信息,添加在Maven依赖冲突解决信息数据库中,提高Maven依赖冲突解决信息数据库中的信息的准确性,从而进一步地提高解决Maven依赖冲突的准确性。可以通过Maven指令行工具或Eclipse POM编辑器进行相关信息的提交,方便快捷。
所述装置、***与前述的方法流程描述对应,不足之处参考上述方法流程的叙述,不再一一赘述。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (22)
1.一种解决Maven依赖冲突的方法,其特征在于,所述方法包括:
获取客户端提交的Maven软件项目依赖冲突信息;
检索预设的Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;其中,所述Maven依赖冲突解决信息数据库用于存储任一所述客户端在解决Maven软件项目依赖冲突过程中提交的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
2.如权利要求1所述的方法,其特征在于,获取客户端提交的Maven软件项目依赖冲突信息,包括:
获取所述客户端通过Maven指令行工具中的查看指令提交的所述Maven软件项目依赖冲突信息;或,
获取所述客户端通过Eclipse POM编辑器中的查看界面提交的所述Maven软件项目依赖冲突信息。
3.如权利要求1所述的方法,其特征在于,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案中选择的时,所述方法还包括:
获取所述客户端提交的Maven依赖冲突解决方案选择信息;
对所述Maven依赖冲突解决信息数据库中的与所述Maven依赖冲突解决方案选择信息对应的所述Maven依赖冲突解决方案的使用人数和选择比例进行更新。
4.如权利要求3所述的方法,其特征在于,获取所述客户端提交的Maven依赖冲突解决方案选择信息,包括:
获取所述客户端通过Maven指令行工具中的选择指令提交的所述Maven依赖冲突解决方案选择信息;或,
获取所述客户端通过Eclipse POM编辑器中的选择界面提交的所述Maven依赖冲突解决方案选择信息。
5.如权利要求1所述的方法,其特征在于,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是所述客户端重新设定的时,所述方法还包括:
获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
将所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案存储在所述Maven依赖冲突解决信息数据库中。
6.如权利要求5所述的方法,其特征在于,获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案,包括:
获取所述客户端通过Maven指令行工具中的上传指令提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;或,
获取所述客户端通过Eclipse POM编辑器中的上传界面提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
7.如权利要求6所述的方法,其特征在于,将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端之后,还包括:
获取所述客户端提交的Maven依赖冲突评论信息;
将所述Maven依赖冲突评论信息,添加在所述Maven依赖冲突解决信息数据库中所述Maven依赖冲突评论信息对应的所述Maven依赖冲突解决方案中。
8.如权利要求7所述的方法,其特征在于,获取所述客户端提交的Maven依赖冲突评论信息,包括:
获取所述客户端通过Maven指令行工具中的评论指令提交的Maven依赖冲突评论信息;或,
获取所述客户端通过Eclipse POM编辑器中的查看界面提交的Maven依赖冲突评论信息。
9.如权利要求1所述的方法,其特征在于,将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案,包括:
从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论中,选取满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
将满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端根据满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论,设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
10.一种解决Maven依赖冲突的装置,其特征在于,所述装置包括:
第一获取模块,用于获取客户端提交的Maven软件项目依赖冲突信息;
查找模块,用于检索预设的Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;其中,所述Maven依赖冲突解决信息数据库用于存储任一所述客户端在解决Maven软件项目依赖冲突过程中提交的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
处理模块,用于将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
11.如权利要求10所述的装置,其特征在于,所述第一获取模块包括:
第一获取单元,用于获取所述客户端通过Maven指令行工具中的查看指令提交的所述Maven软件项目依赖冲突信息;或,
第二获取单元,用于获取所述客户端通过Eclipse POM编辑器中的查看界面提交的所述Maven软件项目依赖冲突信息。
12.如权利要求10所述的装置,其特征在于,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案中选择的时,所述装置还包括:
第二获取模块,用于获取所述客户端提交的Maven依赖冲突解决方案选择信息;
更新模块,用于对所述Maven依赖冲突解决信息数据库中的与所述Maven依赖冲突解决方案选择信息对应的所述Maven依赖冲突解决方案的使用人数和选择比例进行更新。
13.如权利要求12所述的装置,其特征在于,所述第二获取模块包括:
第三获取单元,用于获取所述客户端通过Maven指令行工具中的选择指令提交的所述Maven依赖冲突解决方案选择信息;或,
第四获取单元,用于获取所述客户端通过Eclipse POM编辑器中的选择界面提交的所述Maven依赖冲突解决方案选择信息。
14.如权利要求10所述的装置,其特征在于,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是所述客户端重新设定的时,所述装置还包括:
第三获取模块,用于获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
第一存储模块,用于将所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案存储在所述Maven依赖冲突解决信息数据库中。
15.如权利要求14所述的装置,其特征在于,所述第三获取模块包括:
第五获取单元,用于获取所述客户端通过Maven指令行工具中的上传指令提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;或,
第六获取单元,用于获取所述客户端通过Eclipse POM编辑器中的上传界面提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
16.如权利要求15所述的装置,其特征在于,所述装置还包括:
第四获取模块,用于在所述处理模块将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端之后,获取所述客户端提交的Maven依赖冲突评论信息;
第二存储模块,用于将所述Maven依赖冲突评论信息,添加在所述Maven依赖冲突解决信息数据库中所述Maven依赖冲突评论信息对应的所述Maven依赖冲突解决方案中。
17.如权利要求16所述的装置,其特征在于,所述第四获取模块包括:
第七获取单元,用于获取所述客户端通过Maven指令行工具中的评论指令提交的Maven依赖冲突评论信息;或,
第八获取单元,用于获取所述客户端通过Eclipse POM编辑器中的查看界面提交的Maven依赖冲突评论信息。
18.如权利要求10所述的装置,其特征在于,所述处理模块包括:
选取单元,用于从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论中,选取满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论;
返回单元,用于将满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端,使得所述客户端根据满足预设推送条件的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论,设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
19.一种解决Maven依赖冲突的***,其特征在于,所述***包括:
客户端、Maven依赖冲突共享服务器和Maven依赖冲突解决信息数据库;
其中,所述Maven依赖冲突解决信息数据库,用于存储任一所述客户端在解决Maven软件项目依赖冲突过程中提交的Maven依赖冲突解决方案和Maven依赖冲突评论;
所述客户端包括:第一提交模块,用于向所述Maven依赖冲突共享服务器提交Maven软件项目依赖冲突信息;
所述Maven依赖冲突共享服务器包括:第一获取模块,用于获取所述客户端提交的所述Maven软件项目依赖冲突信息;
查找模块,用于检索所述Maven依赖冲突解决信息数据库,查找与所述Maven软件项目依赖冲突信息匹配的Maven依赖冲突解决方案和Maven依赖冲突评论;
处理模块,用于将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端;
相应地,所述客户端还包括:设定模块,用于设定与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案。
20.如权利要求19所述的***,其特征在于,当所述设定模块设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是从与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案中选择的时,所述客户端还包括:
第二提交模块,用于向所述Maven依赖冲突共享服务器提交Maven依赖冲突解决方案选择信息;
相应地,所述Maven依赖冲突共享服务器还包括:
第二获取模块,用于获取所述客户端提交的Maven依赖冲突解决方案选择信息;
更新模块,用于对所述Maven依赖冲突解决信息数据库中的与所述Maven依赖冲突解决方案选择信息对应的所述Maven依赖冲突解决方案的使用人数和选择比例进行更新。
21.如权利要求19所述的***,其特征在于,当所述客户端设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案是所述客户端重新设定的时,所述客户端还包括:
第三提交模块,用于向所述Maven依赖冲突共享服务器提交所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
相应地,所述Maven依赖冲突共享服务器还包括:
第三获取模块,用于获取所述客户端提交的所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案;
第一存储模块,用于将所述客户端重新设定的与所述Maven软件项目依赖冲突信息对应的所述Maven依赖冲突解决方案存储在所述Maven依赖冲突解决信息数据库中。
22.如权利要求19所述的***,其特征在于,所述客户端还包括:
第四提交模块,用于在所述处理模块将与所述Maven软件项目依赖冲突信息匹配的所述Maven依赖冲突解决方案和所述Maven依赖冲突评论返回给所述客户端之后,向所述Maven依赖冲突共享服务器提交Maven依赖冲突评论信息;
相应地,所述Maven依赖冲突共享服务器还包括:
第四获取模块,用于获取所述客户端提交的Maven依赖冲突评论信息;
第二存储模块,用于将所述Maven依赖冲突评论信息,添加在所述Maven依赖冲突解决信息数据库中所述Maven依赖冲突评论信息对应的所述Maven依赖冲突解决方案中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510110126.9A CN106033336B (zh) | 2015-03-12 | 2015-03-12 | 解决Maven依赖冲突的方法、装置和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510110126.9A CN106033336B (zh) | 2015-03-12 | 2015-03-12 | 解决Maven依赖冲突的方法、装置和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106033336A CN106033336A (zh) | 2016-10-19 |
CN106033336B true CN106033336B (zh) | 2019-07-30 |
Family
ID=57150614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510110126.9A Active CN106033336B (zh) | 2015-03-12 | 2015-03-12 | 解决Maven依赖冲突的方法、装置和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106033336B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228229B (zh) * | 2016-12-19 | 2021-04-13 | 深圳业拓讯通信科技有限公司 | 一种Maven依赖的管理方法以及*** |
CN106777299B (zh) * | 2016-12-30 | 2020-10-09 | 深圳市彬讯科技有限公司 | 运用管理工具与静态数据仓库的项目依赖关系解决方法 |
CN109117242A (zh) * | 2017-06-22 | 2019-01-01 | 龙芯中科技术有限公司 | 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 |
CN108647107A (zh) * | 2018-05-14 | 2018-10-12 | 浪潮软件集团有限公司 | 一种微服务开发框架的统一异常处理方法 |
CN108984416B (zh) * | 2018-08-07 | 2022-04-08 | 东北大学 | 一种评估Maven环境中依赖冲突危险级别的方法 |
US10782940B2 (en) | 2018-10-17 | 2020-09-22 | International Business Machines Corporation | Code library version management |
CN110442376A (zh) * | 2019-07-19 | 2019-11-12 | 精硕科技(北京)股份有限公司 | 一种实现软件打包的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102547415A (zh) * | 2011-12-19 | 2012-07-04 | 北京暴风科技股份有限公司 | 基于cs架构的客户端之间共享播放解决方案的方法 |
CN103369044A (zh) * | 2013-07-11 | 2013-10-23 | 无锡交大联云科技有限公司 | 一种基于云知识库的移动终端用户网络感知诊治方法 |
CN103885969A (zh) * | 2012-12-20 | 2014-06-25 | 国际商业机器公司 | 提供软件问题解决方案的方法和装置 |
-
2015
- 2015-03-12 CN CN201510110126.9A patent/CN106033336B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102547415A (zh) * | 2011-12-19 | 2012-07-04 | 北京暴风科技股份有限公司 | 基于cs架构的客户端之间共享播放解决方案的方法 |
CN103885969A (zh) * | 2012-12-20 | 2014-06-25 | 国际商业机器公司 | 提供软件问题解决方案的方法和装置 |
CN103369044A (zh) * | 2013-07-11 | 2013-10-23 | 无锡交大联云科技有限公司 | 一种基于云知识库的移动终端用户网络感知诊治方法 |
Non-Patent Citations (1)
Title |
---|
Maven 重复依赖检测 (Dependency Convergence), 包冲突解决;iteye_15147;《http://blog.csdn.net/iteye_15147/article/details/82580702》;20140527;第1页 |
Also Published As
Publication number | Publication date |
---|---|
CN106033336A (zh) | 2016-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106033336B (zh) | 解决Maven依赖冲突的方法、装置和*** | |
US11500762B2 (en) | System and method for automated intelligent mobile application testing | |
US11150893B2 (en) | Collaborative software development tool for resolving potential code-change conflicts in real time | |
US20240037020A1 (en) | System and Method for Automated Software Testing | |
US9053435B2 (en) | Generating application models based on discovery based machine learning | |
WO2019000710A1 (zh) | 页面加载方法、装置和电子设备 | |
CN108153670A (zh) | 一种接口测试方法、装置及电子设备 | |
EP3438813B1 (en) | Component management platform | |
US20190129762A1 (en) | Cognitive learning workflow execution | |
US10984360B2 (en) | Cognitive learning workflow execution | |
CN109739855B (zh) | 实现数据表拼接及自动训练机器学习模型的方法和*** | |
US20170010903A1 (en) | User interface level tutorials | |
US11348032B1 (en) | Automated generation of machine learning models | |
US20140109015A1 (en) | Configurable hierarchical tree view | |
US10713084B2 (en) | Cognitive learning workflow execution | |
US20190129759A1 (en) | Cognitive learning workflow execution | |
US20190130325A1 (en) | Cognitive learning workflow execution | |
US20140214396A1 (en) | Specification properties creation for a visual model of a system | |
US11256385B2 (en) | Application menu modification recommendations | |
US9582270B2 (en) | Effective feature location in large legacy systems | |
Lucci et al. | Understanding end-user development of context-dependent applications in smartphones | |
US10699450B2 (en) | Interactive tool for causal graph construction | |
US9251489B2 (en) | Node-pair process scope definition adaptation | |
JP2017522639A5 (zh) | ||
US20190303770A1 (en) | Architectural composite service solution builder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211104 Address after: Room 507, floor 5, building 3, No. 969, Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province Patentee after: ZHEJIANG TMALL TECHNOLOGY Co.,Ltd. Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |