maven解决包冲突方法详解
Maven根据最近胜利策略的原则工作,同时解决依赖冲突,这意味着它在依赖树中找到更接近的版本,它将采用该版本并忽略其他版本。实际上Maven有点懒,所以每当它开始寻找依赖时,它就会从根目录开始遍历树,无论它先前找到哪个版本,它都会选择它并从它们返回而不进一步。可以用下面的命令显示依赖树:老实说,这不是maven的错,因为它想尽快完成这项工作。project-B 依赖于project-C,而project-C又进一步依赖于project-common的2.0 版本并调用其中的 sayGoodBye() 方法。整个项目的依赖关系如下图:根据Maven的transitive依赖机制,resolve-web 将同时依赖于project-common 的 1.0 和 2.0 版本,这就造成了依赖冲突。而根据最近获胜策略,Maven 将选择 project-common 的 1.0 版本作为最终的依赖。这和 Gradle 不同,Gradle 在默认情况下将选择最新的版本作为获胜版本。
下载地址
用户评论