06|第六课:依赖传递性及依赖原则及统一版本及统一编码

一、历史回顾

(一)、依赖性传递

A.jar ---> B.jar ---> C.jar

要使 A.jar ---> C.jar:当且仅当B.jar依赖于C.jar的范围是compile。

例:Demo2 ---> Demo1 ---> junit

把Demo2中的junit的删除,Demo1中的pom.xml依赖junit的修改成compile。然后研究Demo2  ---> junit 之间的关系。

操作一


操作二

二、依赖传递性及依赖原则及统一版本及统一编码

(一)、Maven依赖的原则

1、路径最短优先原则(为了防止冲突)

例:如果Demo2自己本身依赖的junit的版本是3.8,并且Demo2依赖Demo1,Demo1依赖junit的是compile,这个junit的版本是4.0。那么Demo2依赖本身的junit3.8还是junit4.0呢?

依赖的最短路径优先

答:肯定是junit3.8。因为根据路径最短优先原则。

答案图示

2、路径长度相同:

a、在同一个pom.xml文件中有2个相同的依赖(覆盖):后声明的依赖覆盖前面声明的依赖(严禁使用本情况,即严禁在同一个pom.xml中声明2个版本不同的依赖)。

例:在Demo2中有两个依赖,前一个是junit3.8,后一个是junit3.7。(这个测试自己在本机上尝试一下,我这里就不图示了)

答:后一个依赖覆盖前面的依赖。所以这里的结果就是junit3.7。

b、如果是不同的pom.xml文件中有两个路径相同长度的依赖(优先):则先声明的依赖,会覆盖后声明的依赖。

例:Demo2依赖着Demo1的junit4.0版本,同时又依赖着Demo3的junit3.8版本,到底使用哪一个测试呢?(这个测试自己在本机上尝试一下,我这里就不图示了)

相同的路径不同pom.xml的选择

(二)、Maven统一JDK版本

a、Maven统一JDK版本

这个不仅能统一JDK版本,也能统一其它很多。这里使用它统一JDK版本。

版本统一代码

例:统一JDK版本,具体配置如下图所示:

例子

b、Maven统一常量的版本号(一般这个会统一成一个文件)

统一常量的代码

例:统一JDK版本,具体配置如下图所示:

你可能感兴趣的:(06|第六课:依赖传递性及依赖原则及统一版本及统一编码)