一、父子项目继承

1.1、dependencies

如果父项目pom中使用的是

<dependencies>

     ....

</dependencies>

则子项目pom会自动使用pom中的jar包。

1.2、dependencyManagement

如果父项目pom使用的是

<dependencyManagement>

     <dependencies>

          ....

     </dependencies>

</dependencyManagement>

则子项目pom不会自动使用父pom中的jar包,

如果需要使用,就要给出groupId和artifactId,无需给出version

<dependencyManagement>的作用是统一管理版本信息
在子工程中使用时,还是需要引入坐标的,但是不需要给出version

pom文件中,当子项目中引用一个依赖而不用显示的列出版本号,
Maven会沿着父子层次向上找,直到找到一个拥有<dependencyManagement>元素的项目,然后它就会使用在这个<dependencyManagement>元素中指定的版本号;若找不到则报错。

二、依赖传递规则

2.1、传递依赖

当存在传递依赖的情况时,主工程对间接依赖的jar可以访问吗?

例如:A.jar依赖于B.jar,而B.jar依赖于C.jar,那么要怎么修改配置文件,才会让A.jar 也依赖 C.jar 呢?

这要看传递依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问

即 要使A.jar 依赖于C.jar 当且仅当C.jar的范围是compile
在这里插入图片描述

2.2、依赖原则

依赖原则目的:防止jar包的冲突
为了避免造成依赖重复,需要选择一个依赖路径

2.2.1、路径最短优先原则

即优先选择传递路径最短的依赖包

2.2.2、路径长度相同

路径长度相同的情况下,又可以分为是否有在同一个pom.xml两种情况

  1. 覆盖
    如果在同一pom.xml文件中有2个相同的依赖;后面声明的会覆盖前面的依赖
    但这里要说严禁使用本情况,严禁在同一个pom中声明两个不同的依赖
  2. 优先
    如果是在不同pom.xml中有2个相同的依赖;则先声明的依赖,会覆盖后面声明的依赖

暂时添加这些,以后再补充

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐