1.mavne 包依赖路径分析
笔记在开发java及scala过程中使用maven 经常就遇到很多路径依赖的问题,故在此对路径依赖做一个梳理分析
关于maven 的Dependency机制相见maven官网:
众所周知,maven的包路径依赖有最短路径原则与最先声明原则,下面分别对二者进行阐述分析.
依赖路径最短原则 maven会优先选择依赖路径最短的版本,如果出现路径相同的版本则先出现的版本优先
dependency management
如果包没有显式依赖版本而父pom dependency management指定了版本,该版本优于依赖传 递版本
scope传递 具体的逻辑参考官网的规则,主要的注意点是provided的依赖是不会进行依赖传递的。这个点在项目的flink和hadoop包中有重要涉及
shade插件所打包的fat包:
shade的实现原理其实是通过遍历maven解析后的 artifacts依赖列表进行jar包索引然后按顺序把所有jar包中的内容进行合并。由于jar包不允许重 复插入文件,因此shade间接实现了先到的版本为最终版本的功能。而且shade底层实现通过 将fat包的pom文件中dependency去除来实现依赖隔离,所以引用fat包将无法通过 dependency:tree来查看依赖结构。而且shade包会破坏原有的maven依赖分析框架,因此除