版权声明:转载请申明出处,谢谢 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(分类器):用于输出一些附属构件(如具有文档的构件,具有源代码的构件),具体的使用方法使用附加的插件帮助生成。
项目的依赖补充讲解
- 依赖范围
- 什么是传递性依赖
传递性依赖机制的作用:Maven会解析各个直接依赖的POM,将那些必要地 间接依赖以传递性依赖的i形式引入的到当前的项目中。 - 传递性依赖与依赖范围
理解依赖调节机制
作用:解决依赖冲突
依赖冲突:一个项目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。
依赖排除的实现方式
实现统一依赖版本的 统一化