Maven 的坐标与依赖(七)

版权声明:转载请申明出处,谢谢 https://blog.csdn.net/qq_35495763/article/details/87903668

Update Time:2019-2-24 Author:要你命三千又三千 type:读书笔记

问题:maven构件坐标是什么?

概念

构件坐标:标识了构件的唯一性,Maven坐标包括:groupId,artifictId,version,packaging,classifier.
只要提供了正确的坐标元素Maven就会到仓库下载对应构件。

坐标元素详解:
groupld:org.sonnatype.nexus(org.sonnatype组织标识,nexus标识实际项目)
artifactd:定义了实际项目中一个Maven项目。artifactld:实际项目名+Maven项目名(nexus-indexer)
version:Maven项目 的版本(这里注意的Maven 的版本有快照(SNAPSHOT)和release版本)
packaging:maven项目打包方式,对应于构件的扩展名(jar)(默认使用jar)
classifier(分类器):用于输出一些附属构件(如具有文档的构件,具有源代码的构件),具体的使用方法使用附加的插件帮助生成。

项目的依赖补充讲解

  1. 依赖范围
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  2. 什么是传递性依赖
    传递性依赖机制的作用:Maven会解析各个直接依赖的POM,将那些必要地 间接依赖以传递性依赖的i形式引入的到当前的项目中。
  3. 传递性依赖与依赖范围
    在这里插入图片描述

理解依赖调节机制

作用:解决依赖冲突

依赖冲突:一个项目A,通过不同依赖传递路径依赖于X,若在不同路径下传递过来的X版本不同,那么A应该导入哪个版本的X包呢?

冲突解决方案:

1:如果依赖路径的长度不同,则“短路优先”:

     A—>B—>C—>D—>E—>X(version 0.0.1)

     A—>F—>X(version 0.0.2)

     则A依赖于X(version 0.0.2)。

 2:依赖路径长度相同情况下,则“先声明优先”:

     A—>E—>X(version 0.0.1)

     A—>F—>X(version 0.0.2)

     则在项目A的<depencies></depencies>中,E、F那个在先则A依赖哪条路径的X。

依赖排除的实现方式
在这里插入图片描述

实现统一依赖版本的 统一化
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35495763/article/details/87903668