Maven(十二)Maven 依赖详解

依赖的传递性

  • 注意1:在Eclipise创建的Maven项目,若依赖eclipse空间中其他自己创建的 的项目时,此时并不会报错但是当执行mvn compile命令时还是会显示缺失败。所以依赖的其他自己创建的项目必须执行安装,但是**在eclipse中开发的时候没有必要每次执行mvn installation,因为并不影响开发,只有开发完毕之后,在一起执行安装。
    这里写图片描述
    • 本质:即自己创建的项目必须安装到本地仓库中,但是在eclipse中不安装不会影响开发,但最后开发完毕打包时还是需要执行安装命令。
  • 注意2:依赖的传递性,若父项目依赖子项目1,则子项目1中添加的依赖(pom.xml中配置的依赖)则会自动添加到父项目的依赖中(父项目中pom.xml会自动添加)
    这里写图片描述
    这里写图片描述
  • 注意3:直接依赖和传递依赖
    • 父项目依赖子项目1,子项目1又依赖与子项目2,父项目与子项目1为直接依赖,子项目2与父项目为传递依赖。
    • 优点:可以传递的依赖可以不用重复声明,只需要在最底层声明一次。
    • 非compile范围的依赖不能传递,如test和provided,必须在各个项目间重复声明。
      这里写图片描述

依赖的排除

  • 由于spring-core-4.0.0.RELEASE.jar依赖于commons-logging-1.1.1.jar
    若想吧spring-core的依赖commons-logging排除
    这里写图片描述

  • 实现方法
    在pom.xml中添加如下代码

<exclusions>
       <exclusion>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
       </exclusion>
 </exclusions>

这里写图片描述
获取坐标的方法
这里写图片描述
这里写图片描述

依赖的原则

  • 解决jar包冲突问题、模块工程的jar包的冲突
  • 路径最短者优先
    这里写图片描述

  • 路径相同先声明者优先
    这里写图片描述
    看denpendency标签的声明顺序
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/leofitz/article/details/79916118