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

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

作者: 木头amo | 来源:发表于2019-01-24 11:01 被阅读12次

    一、历史回顾

    (一)、依赖性传递

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

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

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

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

    操作一 操作二

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

    (一)、Maven依赖的原则

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

    例:如果Demo2自己本身依赖的junit的版本是3.8,并且Demo2依赖Demo1,Demo1依赖junit的<scope>是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版本

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

    版本统一代码

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

    例子

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

    统一常量的代码

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/jvyhdqtx.html